Les logs binaires MySQL (journal de transaction)

Novembre 2012

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.

2 commentaires :
commentaire n°3315 par stif
stif mardi 31 mai 2016, 10:19
Bonjour,
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 :)
commentaire n°3316 par Stif
Stif mardi 31 mai 2016, 11:35
J'ai finalement trouvé, il faut vidé les fichier .index.

mysql-bin.index, redémarrer le service.

Et c'est bon. Mysql va recréer les fichier tout seul.

A+
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré