Todos los productos
Search
Centro de documentos

PolarDB:Remotely obtain and parse the binary log files of a PolarDB for MySQL cluster

Última actualización: Sep 05, 2026

Use mysqlbinlog para descargar de forma remota los archivos de registro binario de un clúster de PolarDB for MySQL y analizarlos localmente. Esto le permite auditar datos, recuperar información en un momento específico o solucionar problemas de replicación.

Requisitos previos

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

  • Enabled binary logging para el clúster de PolarDB for MySQL. El registro binario está deshabilitado de forma predeterminada. Sin esta función, SHOW BINARY LOGS; devuelve You are not using binary logging. Habilitar o deshabilitar el registro binario reinicia automáticamente el clúster. Por ello, aplique este cambio fuera del horario de mayor actividad y compruebe que sus aplicaciones se reconecten de manera automática.

  • Un cliente de MySQL instalado en su servidor local.

  • El endpoint del clúster (privado o público). Consulte Manage the endpoints of a cluster.

  • Una cuenta de base de datos para el clúster de PolarDB for MySQL. Consulte Create and manage a database account.

Funcionamiento

El nodo que proporciona los registros binarios depende del endpoint al que se conecte:

Método de conexión

Origen de los registros binarios

Endpoint principal, endpoint predeterminado del clúster o endpoint personalizado del clúster asociado al nodo principal

Nodo principal

Endpoint personalizado del clúster asociado únicamente a nodos de solo lectura

Uno de los nodos de solo lectura

Para descargar registros binarios desde un nodo de solo lectura, se requiere una de las siguientes versiones:

  • PolarDB for MySQL 8.0, versión de revisión 8.0.1.1.12 o posterior

  • PolarDB for MySQL 5.7, versión de revisión 5.7.1.0.12 o posterior

Si no se cumple este requisito de versión, mysqlbinlog devuelve Only allow to dump binary log file on primary instance. Consulte Minor version update para actualizar la versión.

Descarga de los archivos de registro binario

  1. Conéctese al clúster de PolarDB desde el cliente de MySQL. Consulte Database connection.

    root@xxx:~# mysql -h xxx-polardb.rwlb.rds.aliyuncs.com -P3306 -utest_api -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is xxx
    Server version: 8.0.13 Source distribution
    
    Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql>
  2. Enumere los archivos de registro binario disponibles:

    SHOW BINARY LOGS;

    La salida muestra el nombre y el tamaño de cada archivo de registro:

    +------------------+-----------+
    | Log_name         | File_size |
    +------------------+-----------+
    | mysql-bin.000005 |      2639 |
    +------------------+-----------+
    1 row in set (0.00 sec)

    Anote el valor de Log_name, ya que lo utilizará en el siguiente paso.

  3. Salga del cliente de MySQL:

    exit
  4. Ejecute mysqlbinlog para descargar el archivo de registro binario en su servidor local. Formato del comando:

    Parámetros:

    Parámetro

    Descripción

    --read-from-remote-server

    Obligatorio. Se conecta al clúster como cliente de replicación para transmitir los registros binarios de forma remota.

    --host / -h

    El endpoint privado o público del clúster. Utilice un endpoint privado si el clúster y su servidor están en la misma región y virtual private cloud (VPC); de lo contrario, use un endpoint público. Si el endpoint utiliza un puerto distinto al predeterminado, agregue el número de puerto después del endpoint.

    --user / -u

    El nombre de la cuenta de base de datos del clúster de PolarDB for MySQL.

    --password / -p

    La contraseña de la cuenta. Omita el valor para introducirla de forma interactiva después de ejecutar el comando.

    --raw

    Guarda el registro binario en su formato binario original, sin convertirlo a texto.

    mysql-bin.<log-number>

    El nombre del archivo de registro binario obtenido del campo Log_name en el paso 2.

    mysqlbinlog -u<Username> -p<Password> -h<Endpoint> --read-from-remote-server --raw mysql-bin.******

    Por ejemplo:

    mysqlbinlog -utest_api -p -htest-polardb.rwlb.rds.aliyuncs.com --read-from-remote-server --raw mysql-bin.000005
    mysql> exit
    Bye
    root@xxx:~# mysqlbinlog -utest_api -p -hxxx-polardb.rwlb.rds.aliyuncs.com --read-from-remote-server --raw mysql-bin.000005
    Enter password:
    root@xxx:~#

Consulta y análisis de los archivos de registro binario

Ejecute mysqlbinlog sobre el archivo descargado para decodificar y consultar su contenido:

mysqlbinlog -vv --base64-output=decode-rows mysql-bin.<log-number> | more
  • -vv: muestra instrucciones SQL detalladas y cambios a nivel de fila.

  • --base64-output=decode-rows: decodifica los eventos de fila codificados en base64 y los convierte en instrucciones SQL legibles.

La salida muestra el contenido decodificado de cada evento del archivo de registro binario:

[root@iZ          ~]# mysqlbinlog -vv --base64-output=decode-rows mysql-bin.000110 | more
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#160217 23:04:37 server id 2802943055  end_log_pos 107  Start: binlog v 4, server v 5.5.18.1-log created 160217 23:04:37
# at 107
#160217 23:04:38 server id 2802943055  end_log_pos 171  Query     thread id=584632      exec time=0     error code=0
SET TIMESTAMP=1455721478/*!*/;
SET @@session.pseudo_thread_id=584632/*!*/;
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 utf8 *//*!*/;
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
/*!*/;
# at 171

Utilice la misma versión de MySQL que la versión del motor de base de datos del clúster de PolarDB para evitar errores de análisis.

Para conocer la sintaxis completa y las opciones de mysqlbinlog, consulte la documentación de MySQL.

Preguntas frecuentes

¿Por qué SHOW BINARY LOGS devuelve "You are not using binary logging"?

El registro binario está deshabilitado de forma predeterminada. Siga los pasos de Enable binary logging para habilitarlo en el clúster e inténtelo de nuevo.

Habilitar o deshabilitar el registro binario reinicia automáticamente el clúster.

¿Por qué mysqlbinlog falla con un error de comprobación de integridad o de suma de verificación?

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.
ERROR: Got error reading packet from server: 'Slave can not handle replication events with the checksum that master is configured to log;

La versión de mysqlbinlog es demasiado antigua. Actualícela a una versión más reciente; por ejemplo, si usa la V3.3, actualice a la V3.4.

¿Por qué mysqlbinlog falla con el mensaje "Lost connection to MySQL server"?

ERROR: Failed on connect: Lost connection to MySQL server at 'reading initial communication packet', system error: 104

Compruebe lo siguiente:

  1. Conectividad de red: compruebe que su servidor pueda alcanzar el endpoint del clúster.

  2. Lista de permitidos de IP: asegúrese de que la dirección IP de su servidor esté agregada a la lista de permitidos del clúster. Consulte Configure an IP whitelist.

  3. Configuración de la base de datos: compruebe si su servidor local de MySQL puede conectarse a las bases de datos y asegúrese de poder acceder correctamente a ellas.

¿Por qué no se decodifica el contenido de los archivos de registro binario?

Si ejecuta mysqlbinlog sin --base64-output=decode-rows, los eventos de fila se muestran como cadenas base64 sin procesar:

A continuación se muestra un ejemplo de la salida de un registro binario sin decodificar cuando no se utiliza --base64-output=decode-rows. Las instrucciones BINLOG contienen datos codificados en base64 que no se han analizado sintácticamente:

[root@iz        ~]# mysqlbinlog -vv mysql-bin.000110 | more
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#160217 23:04:37 server id 2802943055  end_log_pos 107  Start: binlog v 4, server v 5.5.18.1-log created 160217 23:04:37
BINLOG '
BYzEVg9PhBGnZwAAAGsAAAAAAAAQANS41LjE4LjEtbG9nAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAAA==
'/*!*/;
# at 107
#160217 23:04:38 server id 2802943055  end_log_pos 171  Query    thread_id=584632      exec_time=0     error_code=0

Incluya siempre --base64-output=decode-rows al consultar archivos de registro binario.

¿Por qué aparece "Only allow to dump binary log file on primary instance" al conectarse a un nodo de solo lectura?

La versión de su clúster no cumple con el requisito mínimo para acceder a los registros binarios desde un nodo de solo lectura. Actualice a PolarDB for MySQL 8.0, revisión 8.0.1.1.12 o posterior, o bien a PolarDB for MySQL 5.7, revisión 5.7.1.0.12 o posterior. Consulte Minor version update.

¿Por qué los registros binarios de un nodo de solo lectura a veces van atrasados respecto al nodo principal?

El nodo principal replica los archivos de registro binario a los nodos de solo lectura de forma asíncrona. Si se produce latencia de sincronización, es posible que los nodos de solo lectura aún no tengan los archivos de registro escritos más recientemente. Este retraso suele ser breve cuando el volumen de datos es pequeño.

¿Por qué no se elimina un archivo de registro binario caducado tras el periodo de retención binlog_expire_logs_seconds?

Si un hilo de un nodo de solo lectura está leyendo activamente el archivo cuando este caduca, el sistema lo conserva hasta que finaliza la lectura. Una vez que el nodo principal escribe un nuevo archivo de registro binario, el sistema busca los archivos caducados que ya no se estén leyendo y los elimina.