J'ai une base de données MySQL en cours d'exécution avec le journal binaire activé. Malheureusement, une déclaration a été exécutée par le client, qui s'est révélée erronée. Étant donné qu'un certain nombre d'enregistrements ont été "affectés", je souhaite commencer par analyser le bilogue des déclarations de changement de données à partir de cette période. Ensuite, nous pourrions être capable de commencer à ramasser les morceaux.
J'ai utilisé:
mysqlbinlog -v --base64-output=decode-rows --start-datetime="2015-06-26 08:30:00" --stop-datetime="2015-06-26 09:30:00" data/mysql-bin.000005 > C:\temp\binlog.txt
La sortie est assez intimidante. Ce que j'apprécierais, c'est une stratégie pour analyser les déclarations d'insertion, de mise à jour ou de suppression. Gardez à l'esprit que je suis en mode mixte.
Merci.
Lorsque vous avez binlog_format=MIXED
Certaines déclarations apparaîtront comme SQL réel. D'autres déclarations peuvent être obscurcies comme ceci:
### INSERT INTO `sanma`.`response`
### SET
### @1=743096223
### @2=0
### @3='IR'
### @4='UnderProcess'
### @5=2015-05-29 20:51:34
### @6=743053329
### @7=NULL
### @8=NULL
### @9='758484829'
### @10=1432912893
### @11=758484829
### @12='UnderProcess'
### @13=0
### @14=NULL
### @15=NULL
### @16=NULL
### @17=NULL
# at 20535714
#150529 20:51:33 server id 71 end_log_pos 20535741 Xid = 84151212
COMMIT/*!*/;
Cette déclaration était possible de voir parce que le INSERT ... SET
Syntaxe a été utilisée.
D'autres déclarations peuvent être obscopées au-delà de la reconnaissance. C'est le risque d'utiliser mixte ou une rangée.
J'ai traité cela récemment
Jun 02, 2015
: Pourquoi Binlog Captury Seulement des pantalonsMay 15, 2015
: Afficher les instructions SQL de MySQL Binlog (GTID)La seule chose que vous puissiez faire est
# Look for INSERT, UPDATE, DELETE statements
mysqlbinlog ... > statements.sql
grep -i "^[IUD][NPE][SDL][EA][RT][TE]" statements.sql > dml.sql
grep -i "^### [IUD][NPE][SDL][EA][RT][TE]" statements.sql >> dml.sql
Il n'y a pas de garantie que vous attraperez chaque modification du formulaire de déclaration lorsque MySQLD passe par intermittence à Binlog_Format.
veuillez utiliser cet outil pour analyser l'instruction SQL