Todos los productos
Search
Centro de documentos

ApsaraDB RDS:Remotely obtain and parse the binary log file of an ApsaraDB RDS for MySQL instance

Última actualización: Sep 03, 2026

Utilice mysqlbinlog para descargar archivos de registro binario desde una instancia de ApsaraDB RDS for MySQL y analizar su contenido con fines de depuración, auditoría o recuperación de datos.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Una instancia de ApsaraDB RDS for MySQL con la función de copia de seguridad de registros habilitada. Para habilitarla, consulte Procedure

  • Un cliente de MySQL instalado localmente que ejecute la misma versión de MySQL que la instancia de RDS

  • El endpoint de la instancia. Para consultarlo, véase Consulta y gestión de endpoints y puertos de instancia

  • Una cuenta de base de datos con permisos suficientes para conectarse a la instancia

Descarga de archivos de registro binario

Existen dos métodos disponibles. Utilice el método de consola a menos que requiera acceso mediante programación o en tiempo real.

Método 1 (recomendado): Descarga desde la consola

  • Instancias con disco en la nube: La copia de seguridad de registros está habilitada de forma predeterminada. Los registros binarios se cargan en el almacenamiento de copias de seguridad en tiempo real. Descargue los registros en cualquier momento desde la consola. Consulte la sección de disco en la nube en Métodos de descarga.

  • Instancias con disco local: Consulte la sección de disco local en Métodos de descarga.

Método 2: Descarga mediante mysqlbinlog

Utilice este método para descargar archivos de registro binario directamente a su computadora mediante mysqlbinlog.

  1. Conéctese a la instancia de RDS:

    mysql -u<username> -p -h<endpoint>
  2. Liste los archivos de registro binario disponibles y anote los valores de Log_name:

    SHOW BINARY LOGS;

    La salida muestra los archivos de registro binario disponibles:

    mysql> SHOW BINARY LOGS;
    +------------------+-----------+
    | Log_name         | File_size |
    +------------------+-----------+
    | mysql-bin.000022 |    406039 |
    | mysql-bin.000023 |     71497 |
    +------------------+-----------+
    2 rows in set (0.01 sec)
  3. Salga de la CLI de MySQL:

    exit;
  4. Descargue el archivo de registro binario a su computadora local. Reemplace <mysql-bin.XXX> con el nombre del archivo obtenido en el paso 2 y <output-file> con el nombre del archivo local donde desea guardarlo:

    • --read-from-remote-server — establece conexión con el servidor MySQL remoto para transmitir el contenido del registro binario.

    • --raw — guarda el archivo en formato binario sin procesar en lugar de texto.

    • -u<username> — el nombre de usuario de la cuenta de base de datos.

    • -p<password> — la contraseña de la cuenta de base de datos.

    • -h<endpoint> — el endpoint de la instancia de RDS.

    • <mysql-bin.XXX> — el nombre del archivo de registro binario del paso 2.

    • > <output-file> — el archivo local donde se guardará el registro binario.

    mysqlbinlog \
      -u<username> \
      -p<password> \
      -h<endpoint> \
      --read-from-remote-server \
      --raw \
      <mysql-bin.XXX> > <output-file>

    Parámetros:

  5. Compruebe que el archivo se haya descargado correctamente:

    more <output-file>

Análisis de archivos de registro binario

Una vez descargado el archivo de registro binario, utilice mysqlbinlog para analizar y consultar su contenido.

Para visualizar la salida analizada página por página:

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

Para escribir la salida analizada en un archivo:

mysqlbinlog \
  -vv \
  --base64-output=decode-rows \
  <mysql-bin.XXX> > <output-file>

Parámetros:

  • -vv — muestra información detallada de los eventos, incluidos los cambios a nivel de fila en un formato legible.

  • --base64-output=decode-rows — decodifica los eventos de fila codificados en Base64 para permitir la lectura de las sentencias SQL.

  • <mysql-bin.XXX> — el archivo de registro binario que se va a analizar.

  • | more — desplaza la salida pantalla por pantalla.

  • > <output-file> — escribe la salida en un archivo local.

La salida analizada tiene un aspecto similar al siguiente:

[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

Para obtener detalles completos sobre las opciones de mysqlbinlog , consulte la documentación de MySQL .

Preguntas frecuentes

La salida muestra contenido binario ilegible en lugar de sentencias SQL.

Agregue --base64-output=decode-rows al comando mysqlbinlog. Sin esta opción, los eventos de registro binario basados en filas se muestran en formato Base64 sin procesar.

image.png

Aparece este error: ERROR: Error in Log_event::read_log_event(): 'Sanity check failed'

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.

Este es un problema conocido en mysqlbinlog 3.3. Actualice a mysqlbinlog 3.4 o posterior para resolverlo.

Aparece este error: mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8mb4'

Su archivo de configuración my.cnf contiene default-character-set=utf8mb4, parámetro no admitido por mysqlbinlog. Agregue --no-defaults para omitir el archivo de configuración:

mysqlbinlog \
  --no-defaults \
  -u<username> \
  -p<password> \
  -h<endpoint> \
  --read-from-remote-server \
  <mysql-bin.XXX> > <output-file>

Las marcas de tiempo en la salida analizada no coinciden con las horas reales de los eventos.

Las marcas de tiempo de los registros binarios se almacenan como marcas de tiempo UNIX sin información de zona horaria. mysqlbinlog las convierte utilizando la zona horaria local de la computadora donde se ejecuta el comando. Si dicha zona horaria difiere de la zona horaria de la instancia de RDS, las horas mostradas serán incorrectas. Configure su zona horaria local para que coincida con la de la instancia de RDS antes de ejecutar mysqlbinlog.

Ámbito de aplicación

ApsaraDB RDS for MySQL