introduction
Lorsque vous exécutez un site Web critique, il est important de vous assurer que vous disposez d'au moins un serveur de sauvegarde redondant. Cela garantit que votre base de données se synchronise en temps réel. MySQL fait référence à la synchronisation de base de données comme réplication. Ce court didacticiel fournit des instructions sur la configuration d'une réplication MySQL maître-esclave.
Configurer le nœud maître
Modifier /etc/mysql/my.cnfpour désactiver la liaison IP.
Mettez en commentaire les lignes suivantes:
bind-address = 127.0.0.1
skip-networking
Créez de nouveaux paramètres de réplication en exécutant les commandes suivantes:
cat >/etc/mysql/conf.d/replication.cnf <<EOF
[mysqld]
server-id = 100
log_bin = /var/log/mysql/mysql-bin.log
binlog-do-db = YOUR_DATABASE_ONE
binlog-do-db = YOUR_DATABASE_TWO
EOF
Redémarrez le serveur MySQL.
/etc/init.d/mysql restart
Créez un utilisateur esclave dans MySQL en exécutant les commandes suivantes dans la console MySQL.
CREATE USER 'slave'@'SLAVE_SERVER_IP_ADDRESS' identified by 'YOUR_SLAVE_PASSWORD';
GRANT ALL ON *.* TO 'slave'@'SLAVE_SERVER_IP_ADDRESS';
FLUSH PRIVILEGES;
Maintenant, verrouillez l'accès en écriture à votre base de données:
FLUSH TABLES WITH READ LOCK;
Obtenir l'état du nœud maître:
SHOW MASTER STATUS;
Remarque: Notez les valeurs des champs "Fichier" et "Position" car nous devrons les référencer plus tard pour le nœud esclave.
Ouvrez une autre session SSH et videz votre base de données à l'aide de la commande suivante:
mysqldump -u MYSQL_USERNAME -pMYSQL_PASSWORD --databases YOUR_DATABASE_ONE YOUR_DATABASE_TWO > database.sql
Revenez à la session SSH précédente et exécutez la commande suivante dans la console MySQL pour déverrouiller l'accès en écriture:
UNLOCK TABLES;
Transférez le database.sqlcréé à l'étape précédente sur le nœud esclave.
Configurer le nœud esclave
Modifier /etc/mysql/my.cnfpour désactiver la liaison IP.
Mettez en commentaire les lignes suivantes:
bind-address = 127.0.0.1
skip-networking
Créez de nouveaux paramètres pour la réplication en exécutant la commande suivante:
cat >/etc/mysql/conf.d/replication.cnf <<EOF
[mysqld]
server-id = 101
log_bin = /var/log/mysql/mysql-bin.log
binlog-do-db = YOUR_DATABASE_ONE
binlog-do-db = YOUR_DATABASE_TWO
EOF
Redémarrez le serveur MySQL.
/etc/init.d/mysql restart
Importation database.sqlcréée à partir du nœud maître à l'instant en utilisant cette commande:
mysql -u MYSQL_USERNAME-pMYSQL-PASSWORD < database.sql
Maintenant, commençons la réplication. Ouvrez la console MySQL, exécutez les commandes suivantes:
SLAVE STOP;
CHANGE MASTER TO MASTER_HOST='MASTER_SERVER_IP_ADDRESS', MASTER_USER='slave', MASTER_PASSWORD='YOUR_SLAVE_PASSWORD', MASTER_LOG_FILE='FILE_VALUE_FROM_MASTER', MASTER_LOG_POS=POSITION_VALUE_FROM_MASTER;
SLAVE START;
Remarque: La valeur de MASTER_LOG_FILEet MASTER_LOG_POSest "Fichier" et "Position" que nous avons notées à partir de la configuration du nœud maître.