Pergunta

Eu tenho sete arquivos de binlog MySQL 1G que tenho que usar para recuperar algumas informações "perdidas". Eu só preciso obter certas instruções de inserção do log (por exemplo, onde a instrução começa com "inserir no conjunto de tabela field1 ="). Se eu apenas executar um mysqlbinlog (mesmo que por banco de dados e com o uso de forma-, recebo um arquivo de texto com várias centenas de megabytes, o que torna quase impossível analisar com qualquer outro programa.

Existe uma maneira de apenas recuperar certas instruções SQL do log? Não preciso de nenhuma das informações auxiliares (registro de data e hora, AutoinCrement #s etc.). Eu só preciso de uma lista de instruções SQL que correspondam a uma determinada string. Idealmente, eu gostaria de ter um arquivo de texto que apenas lista essas declarações SQL, como:

INSERT INTO table SET field1='a';
INSERT INTO table SET field1='tommy';
INSERT INTO table SET field1='2';

Eu poderia conseguir isso executando o mysqlbinlog em um arquivo de texto e depois analisando os resultados com base em uma string, mas o arquivo de texto é muito grande. Apenas algumas vezes qualquer script que eu corro e até torna impossível abrir em um editor de texto.

Obrigado pela sua ajuda antecipadamente.

Foi útil?

Solução

Nunca recebi uma resposta, mas vou lhe dizer o que fiz para sobreviver. 1. Execute mysqlbinlog em um arquivo de texto 2. criou um script PHP que usa fgets para ler cada linha do tronco 3. Enquanto fica em andamento em cada linha, o script o analisa usando a função de estristias 4. Se a linha corresponde à string que estou procurando pois, ele registra a linha para um arquivo

Demora um pouco para executar o MySqlbinlog e o script PHP, mas ele não se destaca mais. Originalmente, usei o Fread no PHP, mas isso lê o arquivo inteiro na memória e fez com que o script trave em arquivos de log grandes (1G). Agora, leva vários minutos para ser executado (eu também defino a variável max_execution_time ser maior), mas funciona como um charme. O FGETS recebe uma linha de cada vez, por isso não ocupa quase tanta memória.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top