全部产品
Search
文档中心

ApsaraDB RDS:Memperoleh dan Menguraikan File Log Biner dari Instance ApsaraDB RDS for MySQL secara Remote

更新时间:Jul 06, 2025

Topik ini menjelaskan cara memperoleh file log biner dari instance ApsaraDB RDS for MySQL secara remote serta menggunakan mysqlbinlog untuk menguraikannya.

Penting

Perhatikan hal-hal berikut:

  • Sebelum melakukan operasi berisiko tinggi seperti mengubah konfigurasi atau data instance Anda, pastikan untuk memeriksa kemampuan pemulihan bencana dan toleransi kesalahan instance guna memastikan keamanan data.

  • Sebelum mengubah konfigurasi atau data suatu instance, seperti instance Elastic Compute Service (ECS) atau instance ApsaraDB RDS, disarankan untuk membuat snapshot atau mengaktifkan cadangan. Sebagai contoh, Anda dapat mengaktifkan pencadangan log untuk instance ApsaraDB RDS.

  • Jika Anda telah memberikan izin pada informasi sensitif atau mengirimkan informasi sensitif di Konsol Manajemen Alibaba Cloud, segera modifikasi informasi sensitif tersebut. Informasi sensitif mencakup nama pengguna dan kata sandi.

Memperoleh file log biner

Pilih metode untuk memperoleh file log biner sesuai dengan kebutuhan bisnis Anda.

Metode 1: (Direkomendasikan) Unduh file log dari konsol ApsaraDB RDS

  • Instance RDS yang menggunakan disk cloud: Setelah mengaktifkan fitur pencadangan log untuk instance RDS yang menggunakan disk cloud, log biner akan diunggah atau direplikasi ke penyimpanan cadangan secara real-time dan disimpan sebagai file pencadangan log. Fitur ini diaktifkan secara default. Anda dapat mengunduh log biner pada titik waktu tertentu. Untuk informasi lebih lanjut, lihat tabel instance RDS yang menggunakan disk cloud dalam Metode Unduhan.

  • Instance RDS yang menggunakan Premium Local SSD: Untuk informasi lebih lanjut tentang cara mengunduh log biner dari instance tersebut, lihat tabel instance RDS yang menggunakan Premium Local SSD dalam Metode Unduhan.

Catatan

Untuk informasi lebih lanjut tentang cara mengaktifkan fitur pencadangan log, lihat Prosedur.

Metode 2: Memperoleh file log biner secara remote

  1. Hubungkan klien ke instance RDS.

    Penting

    Disarankan menggunakan klien yang menjalankan versi MySQL yang sama dengan instance RDS tempat Anda ingin memperoleh file log biner.

  2. Eksekusi Pernyataan SQL berikut untuk melihat dan mencatat nilai dari Log_name dalam tabel logs. Nilai tersebut adalah nama file log biner, seperti mysql-bin.xxx.

    SHOW BINARY LOGS;

    Berikut adalah contoh keluaran.

    mysql> SHOW BINARY LOGS;
    +------------------+-----------+
    | Log_name         | File_size |
    +------------------+-----------+
    | mysql-bin.000022 |    406039 |
    | mysql-bin.000023 |     71497 |
    +------------------+-----------+
    2 rows in set (0.01 sec)
  3. Gunakan nama file log biner yang diperoleh pada langkah sebelumnya untuk memperoleh file log biner secara remote dan simpan file tersebut ke perangkat lokal Anda.

    1. Jalankan perintah berikut untuk keluar dari CLI MySQL dan masuk ke sistem operasi:

      exit;
    2. Jalankan perintah berikut untuk memperoleh file log biner secara remote dan menyimpan file tersebut ke perangkat lokal Anda:

      mysqlbinlog -u<$User> -p<$Password> -h<$Host> --read-from-remote-server --raw <mysql-bin.XXX>

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    -u<$User>

    Nama pengguna yang digunakan untuk terhubung ke server MySQL.

    -p<$Password>

    Kata sandi yang digunakan untuk terhubung ke server MySQL.

    -h<$Host>

    Titik akhir yang digunakan untuk terhubung secara remote ke instance RDS. Untuk informasi lebih lanjut, lihat Lihat dan kelola titik akhir dan port instance.

    --read-from-remote-server

    Server MySQL remote tempat mysqlbinlog terhubung untuk memperoleh isi file log biner.

    --raw

    Format mentah yang digunakan untuk menampilkan isi file log biner dalam keluaran perintah mysqlbinlog setelah penguraian.

    <mysql-bin.XXX>

    Nama file log biner yang perlu diuraikan. Anda perlu mengonfigurasi parameter ini berdasarkan hasil dari Langkah 2.

    > [$File_Name]

    Nama file log biner yang diperoleh secara remote dan disimpan ke perangkat lokal Anda.

  4. Jalankan perintah berikut untuk memeriksa apakah file log biner telah diperoleh:

    more [$File_Name]

Gunakan mysqlbinlog untuk melihat file log biner

Masuk ke sistem operasi tempat klien MySQL diinstal dan jalankan perintah berikut untuk menggunakan mysqlbinlog guna melihat isi file log biner:

Penting

Disarankan menggunakan klien yang menjalankan versi MySQL yang sama dengan instance RDS tempat Anda ingin memperoleh file log biner.

mysqlbinlog -vv --base64-output=decode-rows <mysql-bin.XXX> | more

Anda dapat menulis isi file log biner yang diuraikan ke file untuk dilihat.

mysqlbinlog -vv --base64-output=decode-rows <mysql-bin.XXX> > [$File_Name]

Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Deskripsi

-vv

Rincian keluaran, termasuk rincian tentang peristiwa yang diperoleh dari penguraian.

--base64-output=decode-rows

Menentukan bahwa pengkodean Base64 digunakan untuk mencatat entri log biner.

<mysql-bin.XXX>

Nama file log biner yang perlu diuraikan. Ganti XXX dengan nama file sebenarnya.

| more

Menentukan bahwa pipa digunakan untuk mengirim keluaran ke perintah more untuk menampilkan keluaran per halaman.

> [$File_Name]

Nama file lokal tempat Anda ingin menulis isi file log biner yang diuraikan.

Catatan

Untuk informasi lebih lanjut tentang penguraian log biner, lihat Dokumentasi MySQL.

Keluaran serupa dikembalikan:

[root@iZbp****** ~]# mysqlbinlog -vv --base64-output=decode-rows mysql-bin.000022 | more
# Istilah yang tepat adalah pseudo_replica_mode, tetapi kami menggunakan alias kompatibilitas ini
# untuk membuat pernyataan dapat digunakan pada versi server 8.0.24 dan yang lebih lama.
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#230911  9:27:28 server id 26718053  end_log_pos 123 CRC32 0xa231cb44   Start: binlog v 4, server v 5.7.42-log created 230911  9:27:28
# at 123
#230911  9:27:28 server id 26718053  end_log_pos 194 CRC32 0x078b6dc1   Previous-GTIDs
# a63b4ed1-4c86-11ee-9029-00163e157053:1-27339
# at 194
#230911  9:27:32 server id 26718053  end_log_pos 259 CRC32 0x59b848c3   GTID    last_committed=0        sequence_number=1       rbr_only=yes    original_committed_ti
mestamp=0       immediate_commit_timestamp=0    transaction_length=0
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
# original_commit_timestamp=0 (1970-01-01 08:00:00.000000 CST)
# immediate_commit_timestamp=0 (1970-01-01 08:00:00.000000 CST)
/*!80001 SET @@session.original_commit_timestamp=0*//*!*/;
/*!80014 SET @@session.original_server_version=0*//*!*/;
/*!80014 SET @@session.immediate_server_version=0*//*!*/;
SET @@SESSION.GTID_NEXT= 'a63b4ed1-4c86-11ee-9029-00163e157053:27340'/*!*/;
# at 259
#230911  9:27:32 server id 26718053  end_log_pos 327 CRC32 0xc0dddaec   Query   thread_id=16849 exec_time=0     error_code=0
SET TIMESTAMP=1694395652/*!*/;
SET @@session.pseudo_thread_id=16849/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=2097152/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb3 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN

FAQ

Berikut ini menjelaskan kesalahan umum yang mungkin terjadi saat menggunakan mysqlbinlog.

  • Jika kesalahan berikut terjadi, periksa versi mysqlbinlog. Misalnya, jika Anda menggunakan mysqlbinlog 3.3 dan mengalami kesalahan berikut, Anda dapat menggunakan mysqlbinlog 3.4 untuk melihat isi file log biner karena kesalahan ini diselesaikan di mysqlbinlog 3.4. Jika kesalahan ini terjadi, gunakan versi mysqlbinlog yang lebih baru untuk melihat isi file log biner.

    ERROR: Error in Log_event::read_log_event(): 'Sanity check failed', data_len: 151, event_type: 35
    ERROR: Could not read entry at offset 120: Error in log format or read error.
  • Jika Anda menggunakan mysqlbinlog untuk melihat isi file log biner tetapi parameter --base64-output=decode-rows tidak digunakan, keluarannya adalah konten yang belum diuraikan.

    image.png

  • Jika kesalahan berikut terjadi, periksa apakah parameter default-character-set=utf8mb4 ada dalam file konfigurasi my.cnf. Jika parameter tersebut ada, tambahkan parameter --no-defaults untuk mencegah kesalahan ini. Contoh: mysqlbinlog --no-defaults -u[$User] -p[$Password] -h[$Host] --read-from-remote-server mysql-bin.XXX > [$File_Name].

    mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8mb4'
  • Jika waktu log biner yang diuraikan oleh perintah mysqlbinlog berbeda dari waktu sebenarnya, periksa apakah zona waktu lingkungan tempat perintah mysqlbinlog dijalankan sama dengan zona waktu database ApsaraDB RDS for MySQL Anda.

    Dalam MySQL, informasi waktu log biner disimpan sebagai timestamp UNIX yang tidak mencakup informasi zona waktu. Oleh karena itu, waktu yang diuraikan oleh perintah mysqlbinlog dikonversi berdasarkan zona waktu lokal lingkungan tempat perintah tersebut dijalankan. Jika zona waktu lingkungan berbeda dari zona waktu instance RDS for MySQL, waktu yang diuraikan tidak sesuai dengan waktu sebenarnya.

Cakupan aplikasi

ApsaraDB RDS for MySQL