Todos os produtos
Search
Central de documentação

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

Última atualização: Jul 15, 2026

Use o mysqlbinlog para baixar remotamente arquivos de log binário de um cluster PolarDB for MySQL e analisá-los localmente para auditoria de dados, recuperação point-in-time ou solução de problemas de replicação.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Ativado o log binário no cluster PolarDB for MySQL. O log binário vem desativado por padrão. Sem ele, o comando SHOW BINARY LOGS; retorna You are not using binary logging. Ativar ou desativar o log binário reinicia automaticamente o cluster. Realize essa alteração em horários de baixa demanda e garanta que suas aplicações consigam se reconectar automaticamente.

  • Um cliente MySQL instalado no servidor local.

  • O endpoint do cluster (privado ou público). Consulte Gerencie os endpoints de um cluster.

  • Uma conta de banco de dados para o cluster PolarDB for MySQL. Consulte Crie e gerencie uma conta de banco de dados.

Como funciona

O nó que fornece os logs binários depende do endpoint ao qual você se conecta:

Método de conexão

Origem dos logs binários

Endpoint primário, endpoint de cluster padrão ou endpoint de cluster personalizado associado ao nó primário

Nó primário

Endpoint de cluster personalizado associado apenas a nós somente leitura

Um dos nós somente leitura

Para baixar logs binários de um nó somente leitura, é necessário atender aos seguintes requisitos:

  • PolarDB for MySQL 8.0, versão de revisão 8.0.1.1.12 ou posterior

  • PolarDB for MySQL 5.7, versão de revisão 5.7.1.0.12 ou posterior

Se a versão não atender ao requisito, o mysqlbinlog retornará Only allow to dump binary log file on primary instance. Consulte Atualização de versão secundária para atualizar.

Baixe os arquivos de log binário

  1. Conecte-se ao cluster PolarDB pelo cliente MySQL. Consulte Conexão com o banco de dados.

    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. Liste os arquivos de log binário disponíveis:

    SHOW BINARY LOGS;

    A saída lista o nome e o tamanho de cada arquivo de log:

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

    Anote o valor de Log_name para usar na próxima etapa.

  3. Saia do cliente MySQL:

    exit
  4. Execute o mysqlbinlog para baixar o arquivo de log binário no servidor local. Formato do comando:

    Parâmetros:

    Parâmetro

    Descrição

    --read-from-remote-server

    Obrigatório. Conecta-se ao cluster como cliente de replicação para transmitir logs binários remotamente.

    --host / -h

    Endpoint privado ou público do cluster. Use um endpoint privado se o cluster e o servidor estiverem na mesma região e Virtual Private Cloud (VPC); caso contrário, use um endpoint público. Se o endpoint utilizar uma porta diferente da padrão, adicione o número da porta após o endpoint.

    --user / -u

    Nome da conta de banco de dados do cluster PolarDB for MySQL.

    --password / -p

    Senha da conta. Omita o valor para digitá-la interativamente após executar o comando.

    --raw

    Salva o log binário no formato binário original, sem convertê-lo para texto.

    mysql-bin.<log-number>

    Nome do arquivo de log binário obtido no campo Log_name da etapa 2.

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

    Exemplo:

    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:~#

Visualize e analise os arquivos de log binário

Execute o mysqlbinlog no arquivo baixado para decodificar e visualizar o conteúdo:

mysqlbinlog -vv --base64-output=decode-rows mysql-bin.<log-number> | more
  • -vv: exibe instruções SQL detalhadas e alterações no nível de linha.

  • --base64-output=decode-rows: decodifica eventos de linha codificados em base64 para SQL legível.

A saída mostra o conteúdo decodificado de cada evento no arquivo de log binário:

[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

Use a mesma versão do MySQL que a versão do mecanismo de banco de dados do cluster PolarDB para evitar erros de análise.

Para obter a sintaxe completa e as opções do mysqlbinlog, consulte a documentação do MySQL.

Perguntas frequentes

Por que SHOW BINARY LOGS retorna "You are not using binary logging"?

O log binário está desativado por padrão. Ative o log binário no cluster e tente novamente.

Ativar ou desativar o log binário reinicia automaticamente o cluster.

Por que o mysqlbinlog falha com erro de sanity check ou checksum?

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;

A versão do mysqlbinlog está muito antiga. Atualize para uma versão mais recente. Por exemplo, se você estiver na V3.3, atualize para a V3.4.

Por que o mysqlbinlog falha com "Lost connection to MySQL server"?

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

Verifique os itens a seguir:

  1. Conectividade de rede: confirme se o servidor consegue alcançar o endpoint do cluster.

  2. Lista de permissões de IP: garanta que o endereço IP do servidor esteja adicionado à lista de permissões do cluster. Consulte Configure uma lista de permissões de IP.

  3. Configurações do banco de dados: verifique se o servidor MySQL local permite conexões com bancos de dados e confirme se você consegue acessá-los com sucesso.

Por que o conteúdo dos arquivos de log binário não está decodificado?

Ao executar o mysqlbinlog sem --base64-output=decode-rows, os eventos de linha aparecem como strings base64 brutas.

O exemplo abaixo mostra uma saída de log binário não decodificada quando --base64-output=decode-rows não é utilizado. As instruções BINLOG contêm dados codificados em base64 que não foram analisados:

[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

Sempre inclua --base64-output=decode-rows ao visualizar arquivos de log binário.

Por que "Only allow to dump binary log file on primary instance" aparece ao conectar-se a um nó somente leitura?

A versão do cluster não atende ao requisito mínimo para acesso a logs binários em nós somente leitura. Atualize para PolarDB for MySQL 8.0 revisão 8.0.1.1.12 ou posterior, ou PolarDB for MySQL 5.7 revisão 5.7.1.0.12 ou posterior. Consulte Atualização de versão secundária.

Por que os logs binários de um nó somente leitura às vezes estão atrasados em relação ao nó primário?

O nó primário replica arquivos de log binário para nós somente leitura de forma assíncrona. Se ocorrer latência de sincronização, os nós somente leitura podem ainda não ter os arquivos de log gravados mais recentemente. Esse atraso costuma ser breve quando o volume de dados é pequeno.

Por que um arquivo de log binário expirado não é excluído após o período de retenção binlog_expire_logs_seconds?

Se uma thread de um nó somente leitura estiver lendo ativamente o arquivo no momento da expiração, o sistema o mantém até que a leitura seja concluída. Após o nó primário gravar um novo arquivo de log binário, o sistema verifica arquivos expirados que não estão mais sendo lidos e os exclui.