Réplication MYSQL

Réplication MYSQL

09 oct. 2016

linux mysql

La réplication Mysql, vous permet de synchroniser un ou plusieurs serveurs esclaves (slave) par rapport à un serveur maître. Cela a plusieurs intêrets allant de la création d’une infrastructure haute disponibilité à un système de sauvegarde. La partie qui m’intéresse aujourd’hui est la création d’un serveur de backup permettant d’être esclave de plusieurs serveurs maitre.

Installation du serveur esclave mysql

L’installation du serveur esclave mysql est simple puisqu’il s’agit d’une installation classique. Nous allons par contre démarrer plusieurs instances afin de cloisonner nos réplications.

Je pars du principe que l’instance initiale de Mysql ne sera pas utilisée et que pour chaque serveur maître, j’aurai donc une instance slave sur mon serveur de backup.

Pour créer une instance slave :

mysql_install_db --user=mysql --datadir=/var/lib/mysql1

Nous aurons donc les données de base pour démarrer notre instance mysql1.

Afin de compléter l’installation, je copie le dossier de configuration /etc/mysql/ vers /etc/mysql1/. Cela permet d’avoir une configuration simple et unique de chaque instance. Et notamment sous Debian, puisque nous avons le fichier debian.cnf qui contient le user debian-sys-maint qui est l’utilisateur permettant d’effectuer diverses vérifications au lancement du serveur. Hors dans le cas d’une réplication, cet utilisateur aura un mot de passe différent sur chacune des instances.

Il conviendra de modifier différents paramètres dans le fichier main.cf avec notamment :

  • datadir : /var/lib/mysql1
  • log_bin : en indiquant un nom de fichier spécifique pour mysql1

et dans le fichier debian-start en modifiant le chemin de configuration pour pointer vers /etc/mysql1

Une fois cette étape réalisée, il reste à modifier le fichier /etc/init.d/mysql :

cp /etc/init.d/mysql /etc/init.d/mysql1
sed -i -e 's/etc\/mysql\//etc\/mysql1\//' /etc/init.d/mysql1
update-rc.d mysql1 defaults

Installation du serveur maître

L’installation du serveur maître est beaucoup plus simple :

  • activer les logs binaires dans /etc/mysql/my.cnf
    • log_bin = /var/log/mysql/mysql-bin.log
  • indiquer le server-id
    • server-id = 1
  • autoriser les connexions distances (si besoin configurer votre pare-feu)
    • bind-address = 0.0.0.0
  • créer l’utilisateur pour la réplication
    •  grant replication slave on *.* to ‘NOM_UTILISATEUR’@’ADRESSE_SERVEUR_ESCLAVE’ identified by ‘MOT_DE_PASSE’;

Lancer une sauvegarde complète des bases et copier là vers le serveur de sauvearde

mysqldump --defaults-file=/etc/mysql/debian.cnf --all-databases --master-data > all.sql
scp all.sql USER@SLAVE:all.sql

Lancement de la réplication

Pour lancer la réplication, importer la base précédement transmise sur votre serveur esclave puis démarrer la réplication.

En complément de cet article

Administrez vos bases de données avec MySQL - 2e édition

A partir de 28
Voir le produit

Commentaires

Me contacter

3 rue Garibaldi
18000 Bourges
SIRET : 81783887300021

contact@clementlevallois.fr

Liens amis
  • Nicolas Vannier, Création de sites à Bourges
  • AuréliA, Photographe à Bourges
  • JM Dubettier, consultant en communication
Mon actualité

Facebook Twitter

Plan du site | Mentions légales | Contactez-moi | Gestion des cookies