O servidor de banco de dados MySQL gera arquivos de log binários para cada transação nos bancos de dados, desde que o administrador não desabilite ou comente o parâmetro “log-bin” no arquivo de configuração my.cny. Os arquivos de log binários são gravados em formato binário. Embora os logs binários, ou também conhecidos como logbin, sejam usados principalmente para fins de replicação do banco de dados MySQL, às vezes você pode precisar examinar ou ler o conteúdo dos logs binários em formato de texto, onde o utilitário mysqlbinlog será útil.
O arquivo de log binário, que normalmente tem nome com o formato host_name-bin.xxxxxx e armazenado no diretório /var/lib/mysql, não pôde ser aberto e lido imediatamente, pois está em formato binário ilegível. Para ler os logs binários em formato de texto, podemos usar o comando mysqlbinlog, que também é capaz de ler arquivos de log de retransmissão escritos por um servidor escravo em uma configuração de replicação. Os logs de retransmissão têm o mesmo formato dos arquivos de log binários.
Para usar o utilitário mysqlbinlog é simples, basta usar a seguinte sintaxe de comando para invocar mysqlbinlog após o login como root (senão você tem que especificar nome de usuário e senha) para shell via SSH:
mysqlbinlog [options] log_file ...
Portanto, para ler e exibir o conteúdo do arquivo de log binário chamado binlog.000001, use este comando:
mysqlbinlog binlog.000001
Os arquivos de log binários e seus dados provavelmente serão muito grandes, tornando quase impossível ler qualquer coisa na tela. No entanto, você pode canalizar a saída do mysqlbinlog para um arquivo que pode ser aberto para navegação posterior no editor de texto, usando o seguinte comando:
mysqlbinlog binlog.000001 > filename.txt
Para reduzir a quantidade de dados recuperados de logs binários, existem várias opções que podem ser usadas para limitar os dados retornados. Entre os úteis estão listados abaixo:
–start-datetime=datetime
Comece a ler o log binário no primeiro evento com um timestamp igual ou posterior ao argumento datetime. O valor datetime é relativo ao fuso horário local na máquina onde você executa mysqlbinlog. O valor deve estar em um formato aceito para os tipos de dados DATETIME ou TIMESTAMP. Por exemplo:
mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000001
–stop-datetime=datetime
Pare de ler o log binário no primeiro evento com um timestamp igual ou posterior ao argumento datetime. Essa opção é útil para recuperação pontual. Consulte a descrição da opção –start-datetime para obter informações sobre o valor datetime.
–start-position=N
Comece a ler o log binário no primeiro evento com uma posição igual ao argumento N. Essa opção se aplica ao primeiro arquivo de log nomeado na linha de comando.
–stop-position=N
Pare de ler o log binário no primeiro evento com uma posição igual ou maior que o argumento N. Essa opção se aplica ao último arquivo de log nomeado na linha de comando.
Para obter mais informações sobre o uso do mysqlbinlog, visite aqui.