Maison  >  Article  >  base de données  >  Comment configurer la réplication maître-esclave MySQL

Comment configurer la réplication maître-esclave MySQL

不言
不言original
2019-03-04 16:52:332283parcourir

Cet article vous présente la configuration de la réplication maître-esclave entre les serveurs MySQL. Jetons un coup d'œil au contenu spécifique.

Comment configurer la réplication maître-esclave MySQL

Détails de configuration :

Serveur maître : 192.168.1.10

Serveur esclave : 192.168.1.20

Base de données : mydb

1. Configurer le serveur principal MySQL

Créer un serveur avec les autorisations REPLICATION SLAVE sur le compte mysql du serveur principal, le client de réplication se connectera au maître.

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.1.20' IDENTIFIED BY 'secretpassword';
mysql> FLUSH PRIVILEGES;

Ayez des instructions d'écriture de bloc sur toutes les tables, donc n'apportez pas de modifications après la sauvegarde.

mysql> use mydb;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> exit;

Modifiez le fichier de configuration mysql et ajoutez le code suivant dans la section [mysqld].

# vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
binlog-do-db=mydb
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1

Redémarrez le serveur maître MySQL pour que les modifications prennent effet.

# service mysqld restart

Utilisez les commandes suivantes pour vérifier le nom actuel du fichier journal binaire (Fichier) et la valeur de décalage actuelle (Position).

mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |      107 | mydb         |                  |
+------------------+----------+--------------+------------------+

Le résultat ci-dessus montre que le binaire actuel utilise mysql-bin.000002 avec un décalage de 107. Notez ces valeurs pour une utilisation sur le serveur esclave.

Sauvegardez la base de données et copiez-la sur le serveur MySQL esclave.

# mysqldump -u root -p mydb > mydb.sql
# scp mydb.sql 192.168.1.20:/opt/

Une fois la sauvegarde terminée, supprimez le READ LOCK de la table afin que les modifications puissent être apportées.

mysql> UNLOCK TABLES;

2. Configurez le serveur esclave MySQL

Modifiez le fichier de configuration salve mysql et ajoutez les valeurs suivantes dans la section [mysqld].

# vim /etc/my.cnf
[mysqld]
server-id=2
replicate-do-db=mydb

server-id est toujours une valeur non nulle. Ces valeurs ne seront jamais similaires à celles des autres maîtres et esclaves.

Redémarrez le serveur esclave mysql. Si vous avez configuré la réplication, veuillez utiliser -skip-slave-start au démarrage et ne vous connectez pas immédiatement au serveur maître.

# /etc/init.d/mysqld restart

Utilisez la commande suivante pour définir la valeur de l'option sur le serveur esclave.

mysql>  CHANGE MASTER TO MASTER_HOST='192.168.1.10',
    -> MASTER_USER='repl_user',
    -> MASTER_PASSWORD='secretpassword',
    -> MASTER_LOG_FILE='mysql-bin.000002',
    -> MASTER_LOG_POS=107;

Démarrez enfin le fil de discussion esclave

mysql> SLAVE START;

Vérifiez l'état du serveur esclave.

mysql> show slave status G
*************************** 1. row ***************************
               Slave_IO_State:
                  Master_Host: 192.168.1.15
                  Master_User: repl_user
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 107
               Relay_Log_File: mysqld-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: No
            Slave_SQL_Running: No
              Replicate_Do_DB: mydb
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 107
              Relay_Log_Space: 107
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
1 row in set (0.00 sec)
mysql>

La réplication maître-esclave MySQL a été configurée avec succès sur votre système et votre mode de travail.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn