Domanda

Ho sette file 1G MySQL binlog che devo usare per recuperare alcune informazioni "perso". Ho solo bisogno di ottenere alcune istruzioni INSERT dal registro (es. In cui la dichiarazione inizia con "tabella INSERT INTO SET field1 ="). Se ho appena eseguito un mysqlbinlog (anche se per database e con l'utilizzo di --short-forma), ho un file di testo che è diverse centinaia di megabyte, il che rende quasi impossibile quindi analizzare con qualsiasi altro programma.

C'è un modo per recuperare solo alcune istruzioni SQL dal registro? Non ho bisogno di alcuna delle informazioni accessorie (timestamp, #s autoincremento, etc.). Ho solo bisogno di un elenco di istruzioni SQL che corrispondono a una determinata stringa. Idealmente, vorrei avere un file di testo che solo liste quelle istruzioni SQL, come ad esempio:

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

ho potuto ottenere che eseguendo mysqlbinlog in un file di testo e poi l'analisi dei risultati basati su una stringa, ma il file di testo è troppo grande. E 'solo volte su qualsiasi script corro e addirittura rende impossibile l'apertura in un editor di testo.

Grazie per il vostro aiuto in anticipo.

È stato utile?

Soluzione

:

Non ho mai ricevuto una risposta, ma vi dirò quello che ho fatto per tirare avanti. 1. Ran mysqlbinlog a un file di testo 2. Creato uno script PHP che utilizza fgets per leggere ogni riga del registro 3. Mentre scorrendo ogni riga, lo script analizza utilizzando la funzione stristr 4. Se la linea corrisponde alla stringa sto cercando, si registra la linea in un file

Ci vuole un po 'per mysqlbinlog corsa e lo script PHP, ma i tempi non è più fuori. All'inizio ho usato fread in PHP, ma che legge l'intero file in memoria e ha causato lo script in crash su grandi (1G) file di log. Ora, ci vogliono diversi minuti per funzionare (ho anche impostare la variabile max_execution_time ad essere più grandi), ma funziona come un fascino. fgets ottiene una linea alla volta, in modo da non occupare quasi tutta la memoria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top