Você pode examinad o arquivo de log binário (see
Secção 4.10.4, “O Log Binário”) com o utilitário
mysqlbinlog
.
shell> mysqlbinlog hostname-bin.001
exibirá todas as consultas contidas no log binário
hostname-bin.001
, junto com outras
informações (tempo da consulta, ID da thread que a executou, o
timestamp de quando foi executada, etc).
Você pode colocar a saída do mysqlbinlog
em
um cliente mysql
; isto é usado para
recuperações de falhas quando você tem um backup antigo (see
Secção 4.5.1, “Backups dos Bancos de Dados”):
shell> mysqlbinlog hostname-bin.001 | mysql
ou
shell> mysqlbinlog hostname-bin.[0-9]* | mysql
Você também pode redirecionar a saída do
mysqlbinlog
para um arquivo texto, então
modifique este arquivo texto (para excluir as consultas que
você não quer executar por alguma razão), e então execute as
consultas a partir do arquivo texto dentro do
mysql
.
mysqlbinlog
possui a opção
position=#
que exibirá apenas as consultas
cujo offset no log binário é maior ou igual a
#
.
Se você tiver mais que um log binário para executar no servidor MySQL, o método seguro é fazê-lo em uma única conexão MySQL. Aqui está o que pode ser INseguro:
shell>mysqlbinlog hostname-bin.001 | mysql # DANGER!!
shell>mysqlbinlog hostname-bin.002 | mysql # DANGER!!
Isto causará problemas se o primeiro log binário conter um
CREATE TEMPORARY TABLE
e o segundo contém
uma consulta que utiliza esta tabela temporária: quando o
primeiro mysql
termina, ele apara a tabela
temporária, assim a o segundo mysql
relatará um ``tabela desconhecida''. Isto ocorre porque você
deve executar todos os log binários que você deseja em uma
única conexão, especialmente se você usa tabelas
temporárias. Aqui estão dois modos possíveis:
shell> mysqlbinlog hostname-bin.001 hostname-bin.002 | mysql
shell>mysqlbinlog hostname-bin.001 > /tmp/queries.sql
shell>mysqlbinlog hostname-bin.002 >> /tmp/queries.sql
shell>mysql -e "source /tmp/queries.sql"
A partir do MySQL 4.0.14, mysqlbinlog
pode
preparar uma entrada para o mysql
executar um
LOAD DATA INFILE
a partir de um log binário.
Como o log binário contém os dados para carregar (isto é
verdade para o MySQL 4.0; o MySQL 3.23 não grava o dado
carregado em um log binário, assim o arquivo original era
necessário quando se queria executar o conteúdo do log
binário), mysqlbinlog
copiará este data
para um arquivo temporário e imprime um comando LOAD
DATA INFILE
para o mysql
carregar
este arquivo temporário. O local onde o arquivo temorário é
criado é o diretório temporário por padrão; ele pode ser
alterado com a opção local-load
do
mysqlbinlog
.
Antes do MySQL 4.1, mysqlbinlog
não podia
preaparar saída cabíveis para mysql
quando
o log binário continha consultas de diferentes threads usando
tabelas temporárias de mesmo nome, se estas consultas eram
entrelaçadas. Isto está resolvido no MySQL 4.1.
Você também pode usar o mysqlbinlog
--read-from-remote-server
para ler o log binário
diretamente de um servidor MySQL remoto. No entanto, isto é
algo que está obsoleto já que queremos tornar fácil de se
aplicar os logs binários em servidores MySQL em execução.
mysqlbinlog --help
lhe dará mais
informações
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.