Dans les fonctions avancées de MySQL on trouve la
réplication.
Je vais vous en parler car j’ai utilisé cette fonction.
Et j’ai trouvé cela très pratique.
Actuellement, les données sont stockées dans une seule base de données
présente sur un seul serveur.
La réplication est la possibilité de distribuer une base de données sur plusieurs serveurs en même temps. Bien que le problème soit que chaque serveur doit être le plus récent possible. La réplication est donc le mécanisme qui va permettre de mettre à jour l’information présente sur chaque serveur de façon automatique. Pour cela, les serveurs devront échanger des informations entre eux, afin de mettre à jour correctement le contenu de ou des bases.
Dans cet article, je vais traiter la mise en place d’un serveur maître en lecture et écriture et un serveur esclave en lecture ; car dans la
réplication, on peut trouver une multitude de façons de mettre en
réplication des serveurs de base de données.
Avec un système de réplication, on obtient trois grands points :
– Performance
– Tolérance de panne
– Protection des données
MySQL gère la réplication de la façon suivante : vous devez avoir un
serveur "maître" et un ou plusieurs serveurs "esclaves". Chaque serveur esclave va récupérer à intervalles réguliers les informations de mise à jour sur le serveur maître. Dans cette solution, vous pouvez diriger vos requêtes de mise à jour et d’insertion sur le serveur maître, et on peut diriger les requêtes de type lecture
SELECT sur les serveurs esclaves.
MySQL stocke sur le serveur maître toutes les demandes de mise à jour dans un fichier binaire : le binary update log. Les serveurs esclaves téléchargent à intervalles réguliers la partie du binary log dont ils ont besoin, puis ils exécutent les requêtes téléchargées pour mettre à jour leurs données. Ce qui implique que les serveurs esclaves n’ont pas le même degré
de mise à jour.
Le serveur maître ne sait pas combien il y a de serveurs esclaves.
La situation que MySQL gère le mieux et sans problème est :
– La sauvegarde
– La diffusion d’informations
Par exemple, un site sur un site 1 avec le serveur maître et un serveur esclave sur un site 2 en lecture.
La pratique
Il faut un utilisateur sur le serveur maître qui a les privilèges d’accès aux fichiers (FILE PRIVILEGES).
Il faut arrêter le serveur maître pour faire une sauvegarde des bases au repliquer.
service mysql stop
Sauvegarder les bases avec cette commande :
tar -cvf /tmp/copie.tar
/chemin/devos/donnees
Modifier le fichier de configuration my.cnf du serveur maître, il doit ressembler à cela :
[mysqld]
log-bin
server-id=1
binlog-do-db=votre_base
Redémarrer le serveur maître avec serveur mysql start
Il faut arrêter le serveur esclave pour modifier le my.cnf.
service mysql stop
Modifier le fichier my.cnf du serveur esclave :
[mysqld]
server-id=2
master-host=ip_du_maître
master-user=replique
master-password=*****
master-port=3306
Copier les données de la sauvegarde sur le serveur esclave et assurez-vous d’avoir le même système de gestion des droits d’accès sur les deux serveurs.
Redémarrez le serveur esclave.
Pour vérifier que tout fonctionne, tapez cette commande : mysqladmin processlist -p
dans une shell sur le serveur maître puis sur le serveur esclave.