J'ai configuré la réplication entre une base de données existante (id-serveur = 23) et une nouvelle (id-serveur = 51).
J'ai suivi les étapes de cette question de stackoverflow , mais la réplication ne se produit pas.
Sur le maître:
State: Has sent all binlog to slave; waiting for binlog to be updated
Lorsque je montre des hôtes esclaves:
+-----------+------+------+-------------------+-----------+
| Server_id | Host | Port | Rpl_recovery_rank | Master_id |
+-----------+------+------+-------------------+-----------+
| 51 | | 3306 | 0 | 23 |
+-----------+------+------+-------------------+-----------+
1 row in set (0.01 sec)
Sur l'esclave:
State: Slave has read all relay log; waiting for the slave I/O thread to update it
afficher le statut d'esclave
Slave_IO_State: Waiting for master to send event
...snip...
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 98
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 244
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Y a-t-il quelque chose que je dois faire pour obtenir la réplication?
La réplication MySQL fonctionne très bien. Comment puis-je savoir ?
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Cela indique que les deux threads de réplication sont actifs.
Pour vérifier cela, exécutez ce qui suit sur l'esclave:
SELECT COUNT(1) ReplicationThreadCount FROM information_schema.processlist
WHERE user = 'system user';
Si ReplicationThreadCount
> 1, la réplication fonctionne très bien.
Vous pouvez également exécuter SHOW PROCESSLIST;
et recherchez deux connexions dont l'utilisateur est system user
Les deux états que vous avez mentionnés pour le maître et l'esclave sont normaux pour un état de réplication en cours d'exécution
Lorsque vous ajoutez des données au maître, vous pouvez savoir que les données arrivent à l'esclave en regardant
Read_Master_Log_Pos
Exec_Master_Log_Pos
Relay_Log_Space
dans la sortie de SHOW SLAVE STATUS\G
. Ces chiffres vont changer, ce qui indique son fonctionnement.