MySQL -
Écrit par Durand Franck


Publié le 28.07.11
Par défaut, dans le cas d'une réplication MySQL, le serveur esclave correspond exactement au serveur maitre ( pour les bases / tables voulues ).
Il peut cependant être utile de pouvoir éxécuter certaines requêtes uniquement sur le maitre, sans les voir se repliquer sur le serveur esclave.
Pour pouvoir le faire il faut comprendre comment fonctionne la réplication MySQL. Afin d'activer la réplication, il est nécessaire d'activer les log binaires, qui vont contenir les requêtes executé sur le serveur. Le serveur esclave va alors venir lire ces log, pour répercuter les opérations.
Il suffit donc sur le serveur maitre, d'utiliser la variable SQL_LOG_BIN pour contrôler le log de nos requêtes :
SET SQL_LOG_BIN=0;
.... requetes non logguer ....
SET SQL_LOG_BIN=1;
De cette manière; il est possible de ne pas logguer, et donc de ne pas répliquer certaines requêtes sur le serveur esclave.
ATTENTION : si vous ne logguer pas des requêtes de création/modification/suppression de tables/bases, la réplication peux se briser, en effet une future requête qui ne pourai pas s'effectuer correctement sur le serveur esclave provoquerai une erreur stopant la replication !
L'utilisation de cette technique peux être utile pour par exemple obtenir un serveur esclave avec une plus grande rétention des données que le serveur maitre. En ne logguant pas les requêtes de nettoyage du maitre, et en utilisant une période de nettoyage différente sur le serveur esclave, on arrive alors à ce resultat.