All Products
Search
Document Center

ApsaraDB RDS:Mendapatkan dan mengurai log biner untuk instans RDS for MySQL

Last Updated:Jun 22, 2026

Topik ini menjelaskan cara mendapatkan log biner dari instans Alibaba Cloud RDS for MySQL dari jarak jauh dan menguraikannya menggunakan utilitas mysqlbinlog.

Penting
  • Sebelum melakukan operasi berisiko, seperti mengubah konfigurasi atau data instans, pastikan instans Anda memiliki ketahanan terhadap bencana dan kesalahan guna melindungi data Anda.

  • Jika Anda mengubah konfigurasi atau data instans—misalnya instans ECS atau RDS—buat snapshot atau aktifkan log backup untuk instans RDS terlebih dahulu.

  • Jika Anda telah memberikan izin atau mengirimkan informasi sensitif (seperti username dan password) di platform Alibaba Cloud, segera ubah informasi tersebut.

Mendapatkan log biner

Metode 1: Unduh dari Konsol RDS

  • Instans yang menggunakan cloud disk: Setelah Anda mengaktifkan fitur log backup (yang diaktifkan secara default), log lokal (log biner) diunggah atau disalin ke ruang penyimpanan backup secara real time untuk membentuk cadangan log. Anda dapat mengunduh cadangan log untuk titik waktu yang diinginkan. Untuk informasi selengkapnya, lihat Unduh dari instans cloud disk.

  • Instans yang menggunakan high-performance local disk: Untuk informasi selengkapnya, lihat Unduh dari instans high-performance local disk.

Catatan

Untuk mempelajari cara mengaktifkan log backup, lihat Mencadangkan instans Alibaba Cloud RDS for MySQL.

Metode 2: Mendapatkan log biner dari jarak jauh

  1. Hubungkan ke instans Alibaba Cloud RDS for MySQL.

    Penting

    Versi klien MySQL harus sesuai dengan versi instans RDS.

  2. Jalankan pernyataan SHOW BINARY LOGS; untuk melihat nama file log biner. Catat nama file yang Anda perlukan, misalnya mysql-bin.xxx, dari kolom Log_name.

    SHOW BINARY LOGS;

    Output serupa berikut dikembalikan:

    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 dari langkah sebelumnya untuk mendapatkan log biner dari jarak jauh dan menyimpannya secara lokal.

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

      exit;
    2. Jalankan perintah berikut untuk mendapatkan log biner dari jarak jauh dan menyimpannya ke mesin 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>

      Username yang digunakan untuk menghubungkan ke server MySQL.

      -p<$Password>

      Password yang digunakan untuk menghubungkan ke server MySQL.

      -h<$Host>

      Titik akhir instans Alibaba Cloud RDS. Untuk mempelajari cara menemukan titik akhir, lihat Melihat titik akhir dan nomor port instans Alibaba Cloud RDS for MySQL.

      --read-from-remote-server

      Menghubungkan ke server MySQL remote yang ditentukan untuk mendapatkan log biner.

      --raw

      Saat digunakan bersama --read-from-remote-server, opsi ini menyebabkan mysqlbinlog menulis log biner ke file lokal dalam format aslinya.

      <mysql-bin.XXX>

      Nama file log biner yang akan didapatkan, sebagaimana diidentifikasi pada langkah 2.

Menampilkan file log biner menggunakan mysqlbinlog

Jalankan perintah mysqlbinlog berikut untuk melihat isi file log biner.

Penting

Versi klien MySQL harus sesuai dengan versi instans RDS.

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

Untuk menyimpan konten hasil penguraian guna ditinjau, tulis output ke file.

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

Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Deskripsi

-vv

Menampilkan output detail, termasuk konten lengkap untuk setiap event yang diurai.

--base64-output=decode-rows

Mencetak event baris log biner dalam bentuk yang telah didekode.

<mysql-bin.XXX>

Nama file log biner yang akan diurai. Ganti XXX dengan nama file sebenarnya.

| more

Mengarahkan output ke perintah more untuk tampilan berhalaman.

> [$File_Name]

File lokal tempat konten hasil penguraian ditulis.

Catatan

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

Output serupa berikut dikembalikan:

[root@iZbp****** ~]# mysqlbinlog -vv --base64-output=decode-rows mysql-bin.000022 | more
# The proper term is pseudo_replica_mode, but we use this compatibility alias
# to make the statement usable on server versions 8.0.24 and older.
/*!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

Bagian ini menjelaskan masalah umum saat menggunakan utilitas mysqlbinlog.

  • Jika Anda menerima error berikut, periksa versi utilitas mysqlbinlog Anda. Error ini, yang mungkin terjadi pada versi 3.3, telah diperbaiki pada versi 3.4. Untuk mengatasinya, gunakan versi mysqlbinlog yang lebih baru.

    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 tidak menentukan parameter --base64-output=decode-rows saat menjalankan mysqlbinlog, output tetap dalam bentuk terenkripsi.

    image.png

  • Jika Anda menerima error ini, periksa apakah file konfigurasi my.cnf Anda berisi bidang default-character-set=utf8mb4. Jika iya, tambahkan parameter --no-defaults ke perintah Anda untuk mengatasi error tersebut. 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 timestamp dalam log hasil penguraian tidak tepat, verifikasi bahwa zona waktu lingkungan lokal Anda sesuai dengan zona waktu database.

    Log biner MySQL menyimpan timestamp dalam format Unix time tanpa data zona waktu. Perintah mysqlbinlog mengonversi timestamp tersebut menggunakan zona waktu lokal sistem tempat perintah tersebut dijalankan. Ketidaksesuaian zona waktu antara lingkungan klien dan server database akan menghasilkan timestamp yang salah dalam output.

Berlaku untuk

Alibaba Cloud RDS for MySQL