Extraire les requêtes SQL depuis un binlog au format RAW

Le format des log binaires RAW a un gros inconvenant, lorsque vous voulez rejouer des requêtes a partir des log binaires, l’extraction de celle ci est plus complexe.

#!/bin/sh
LIST=$(ls -1 /var/log/mysql/mysql-bin.* | grep -v index | awk -F "." '{print $2}')
DIRDST="/mnt/pad/"
DIRSRC="/var/log/mysql"
DATABASE="votrebdd"

echo -n > $DIRDST"/"result.txt

for i in $LIST; do
echo -ne $i
mysqlbinlog --database=$DATABASE --base64-output=DECODE-ROWS --verbose --start-datetime="2012-01-06 00:00:00" --stop-datetime="2012-01-06 13:00:00" $DIRSRC"/mysql-bin."$i | grep "^###" $DIRDST"/"result.txt
echo -ne "\tdone\r\n"
done

Supprimez ou modifiez les paramètres suivant en fonction de vos besoin :

  • –start-datetime : Date de debut d’extraction
  • –stop-datetime : Apres cette date, les logs ne seront plus extrait

Le résultat est presque injectable directement dans MySQL, il nécessite encore quelque traitement


Suggestions de lecture :

comments powered by Disqus