Les logs binaires MySQL (journal de transaction)
Le journal de transaction sert à enregistrer toutes les modifications apportées à une base de données (il s'agit des requêtes SQL en écriture : INSERT et UPDATE).
Ce journal a plusieurs fonctions :
- Il permet de pouvoir restaurer une base de données à n'importe quel moment dans le temps, en parant d'un backup complet de la base, et en rejouant une plage de transactions contenues dans le journal, jusqu'à la date qui nous intéresse
- Mais il est aussi utilisé pour la réplication
Qu'est-ce que la réplication ?
La réplication consiste à créer des copies d'un serveur de base de données MySQL de façon à pouvoir répartir la charge (load-balancing) et ainsi pouvoir répondre à de fortes demandes, sur les sites à grande audience (comme facebook par exemple).
On commence par définir un serveur maître (MASTER), puis un ou plusieurs serveurs esclaves (SLAVE) qui ne sont en fait que des copies du serveur MASTER.
Les serveurs SLAVE reçoivent les mêmes modifications que le serveur MASTER grâce au journal de transaction.
Qu'est-ce que le log binaire ?
Le journal de transaction est stocké dans des fichiers de log binaire qui sont nommés mysql-bin.XXXXX
, dans le dossier data de MySQL, exemple :
C:\EasyPHP\mysql\data\mysql-bin.000001
Il n'y a pas qu'un seul fichier, MySQL en créé plusieurs. La liste de tous les fichiers log est stockée dans le fichier mysql-bin.index
.
Comment vider le journal de transaction ?
Les logs binaires ne cessent de grandir avec le temps, donc il faut régulièrement les vider (ou les purger).
Pour nettoyer les logs binaires, évitez de supprimer les fichiers mysql-bin
à la main, il faut utiliser cette requête SQL :
RESET MASTER;
Désactiver les log binaire MySQL
Pour désactiver le journal de transaction, il faut modifier le fichier de configuration de MySQL : my.ini
, qui se trouve ici par exemple :
C:\EasyPHP\conf_files\my.ini
Ouvrez ce fichier dans un éditeur de texte, puis trouvez les lignes log-bin=
et binlog_format=
, et commentez les en mettant un # au début de la ligne (vous pouvez aussi tout simplement supprimer la ligne) :
Allez donc jeter un oeil sur cette page : changer la couleur de la grille dans excel.
# log-bin=mysql-bin # binlog_format=mixed
Il est généralement inutile d'avoir activé le journal de transaction en local, et pourtant ce log est activé par défaut avec EasyPHP. C'est peut-être aussi le cas avec WAMP.
Visionner les log binaire
Pour consulter un log binaire MySQL, il est nécessaire de le convertir en texte auparavant, pour pouvoir le lire avec un éditeur de texte.
Le programme mysqlbinlog fourni avec MySQL permet justement de faire ça. C'est un programme en ligne de commande, voilà un exemple :
C:\EasyPHP\mysql\data>C:\EasyPHP\mysql\bin\mysqlbinlog.exe mysql-bin.000001
On peut aussi consulter les logs dans phpMyAdmin, onglet Log binaire.
Allez donc jeter un oeil sur cette page : visage mystique en lévitation.
d'abord merci pour toutes ces informations.
Cependant je n'arrive pas à activer mes fichiers de logs binaire.
Je les ai bien renseigné dans le my.cnf
Le fichier à les bons droits.
Mais lorsque je redémarre le serveur, rien à changé.
Show binary logs; m'indique qu'ils ne sont pas activés.
Et je ne trouve rien dans les logs.
J'aurais bien besoin d'aide :)
mysql-bin.index, redémarrer le service.
Et c'est bon. Mysql va recréer les fichier tout seul.
A+