web-dev-qa-db-fra.com

Maître - la réplication maître ne fonctionne pas

J'ai configuré deux serveurs WAMP fonctionnant sur différentes machines pour la réplication maître-maître. J'utilise un routeur linksys pour le réseau. J'ai créé un réseau sans fil, mais l'un des boîtiers de serveur n'a pas de WIFI, j'ai donc utilisé un câble pour le connecter au routeur. Après la configuration, tout semble aller bien, mais les serveurs ne semblent pas se connecter les uns aux autres en tant qu'esclaves. Voici l'état du serveur.

Variable               Value
Slave_IO_State:        Connecting to master
Master_Host:           192.168.1.100
Master_User:           master
Master_Port:           3306
Connect_Retry:         60
Master_Log_File:       mysql-bin.000001
Read_Master_Log_Pos:   95849
Relay_Log_File:        Chibuzo-PC-relay-bin.000001
Relay_Log_Pos :        4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running:      Connecting
Slave_SQL_Running:     Yes
Replicate_Do_DB:       ticket
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:    95849
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:  

En exécutant la requête suivante sur le serveur 1 avec l'adresse IP 192.168.1.102, j'ai obtenu le résultat suivant

SELECT user, Host FROM mysql.user WHERE Repl_slave_priv = 'Y';

+-----------+-------------------------+
| User      | Host                    |
+-----------+-------------------------+
| root      | localhost               |
| root      | 127.0.0.1               |
| root      | ::1                     |
| master    | 192.168.1.100           |
+-----------+-------------------------+

Pour le serveur 2 avec IP 192.168.1.100

 +-----------+-------------------------+
 | User      | Host                    |
 +-----------+-------------------------+
 | root      | localhost               |
 | root      | 127.0.0.1               |
 | root      | ::1                     |
 | master    | 192.168.1.102           |
 +-----------+-------------------------+

Voici une partie du journal des erreurs sur 192.168.1.102

121230  1:23:29 [Note] Plugin 'FEDERATED' is disabled.
121230  1:23:29 InnoDB: The InnoDB memory heap is disabled
121230  1:23:29 InnoDB: Mutexes and rw_locks use Windows interlocked functions
121230  1:23:29 InnoDB: Compressed tables use zlib 1.2.3
121230  1:23:29 InnoDB: Initializing buffer pool, size = 16.0M
121230  1:23:29 InnoDB: Completed initialization of buffer pool
121230  1:23:29 InnoDB: highest supported file format is Barracuda.
121230  1:23:30 InnoDB: Waiting for the background threads to start
121230  1:23:31 InnoDB: 1.1.8 started; log sequence number 5483034
121230  1:23:31 [Note] Server hostname (bind-address): '(null)'; port: 3306
121230  1:23:31 [Note]   - '(null)' resolves to '::';
121230  1:23:31 [Note]   - '(null)' resolves to '0.0.0.0';
121230  1:23:31 [Note] Server socket created on IP: '0.0.0.0'.
121230  1:23:31 [Note] Event Scheduler: Loaded 0 events
121230  1:23:31 [Note] wampmysqld: ready for connections.
Version: '5.5.24-log'  socket: ''  port: 3306  MySQL Community Server (GPL)
121230  2:33:12 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=Chibuzo-PC-relay-bin' to avoid this problem.
121230  2:33:12 [Note] 'CHANGE MASTER TO executed'. Previous state master_Host='', master_port='3306', master_log_file='', master_log_pos='4'. New state master_Host='192.168.1.100', master_port='3306', master_log_file='mysql-bin.000001', master_log_pos='95849'.
121230  2:38:50 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000001' at position 95849, relay log '.\Chibuzo-PC-relay-bin.000001' position: 4
121230  2:39:11 [ERROR] Slave I/O: error connecting to master '[email protected]:3306' - retry-time: 60  retries: 86400, Error_code: 2003
130101  2:56:57 [Note] wampmysqld: Normal shutdown

130101  2:56:57 [Note] Event Scheduler: Purging the queue. 0 events
130101  2:56:58 [Note] Error reading relay log event: slave SQL thread was killed
130101  2:56:58 [Note] Slave I/O thread killed while connecting to master
130101  2:56:58 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.000001', position 95849
130101  2:57:00 [Warning] wampmysqld: Forcing close of thread 1011  user: 'root'

SHOW binary LOGS;

Sur 192.168.1.102

 +------------------+---------------+
 | Log_name         | File_size     |
 +------------------+---------------+
 | mysql-bin.000001 |  1455         |
 | mysql-bin.000002 |   236         |
 | mysql-bin.000003 |  6417         |
 | mysql-bin.000004 | 12755         |
 +-----------+----------------------+

Sur 192.168.1.100

 +------------------+---------------+
 | Log_name         | File_size     |
 +------------------+---------------+
 | mysql-bin.000001 |  96096        |
 | mysql-bin.000002 |  91695        |
 | mysql-bin.000003 |  48773        |
 +------------------+---------------+
5
Chibuzo

Dans votre journal des erreurs:

[ERROR] Slave I/O: error connecting to master '[email protected]:3306' - retry-time: 60  retries: 86400, Error_code: 2003

Error_code: 20: L'erreur (2003) Impossible de se connecter au serveur MySQL sur 'serveur' (10061) indique que la connexion réseau a été refusée. Vous devez vérifier qu'un serveur MySQL est en cours d'exécution, qu'il dispose de connexions réseau activées et que le port réseau que vous avez spécifié est celui configuré sur le serveur.

Essayez de vous connecter d'un serveur à l'autre avec votre compte "maître":

Sur 192.168.1.100:

mysql -h 192.168.1.102 -u master -p

Sur 192.168.1.102:

mysql -h 192.168.1.100 -u master -p

Vérifiez, votre pare-fe, essayez de ping et d'autres choses en relation avec la communication réseau ...

Max.

6
Seksi DBA

J'ai une suggestion

Sur l'esclave, exécutez ce qui suit:

STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=95849;
START SLAVE;
SELECT SLEEP(15);
SHOW SLAVE STATUS\G

Cela réinitialisera tous les journaux de relais et tentera de se connecter à partir du fichier journal et de la position à partir du message d'erreur. Si vous obtenez Slave_IO_Running: Connecting, il y a deux scénarios à étudier

SCÉNARIO # 1: Le binlog mysql-bin.000001 sur 192.168.1.100 est peut-être corrompu.

Vous pouvez le vérifier en exécutant

mysqlbinlog --start-position=95849 mysql-bin.000001 > binlog_stuff.txt

Examiner binlog_stuff.txt pour voir si contient des instructions propres ou des erreurs du vidage binlog.

SCÉNARIO # 2: Le binlog mysql-bin.000001 sur 192.168.1.100 provient d'une version plus récente de MySQL

  • La réplication de MySQL 5.0 vers MySQL 5.1 est autorisée
  • La réplication de MySQL 5.0 vers MySQL 5.5 est autorisée
  • La réplication de MySQL 5.1 vers MySQL 5.5 est autorisée
  • La réplication de MySQL 5.5 vers MySQL 5.1 n'est pas autorisée
  • La réplication de MySQL 5.5 vers MySQL 5.0 n'est pas autorisée
  • La réplication de MySQL 5.1 vers MySQL 5.0 n'est pas autorisée
  • J'en ai déjà discuté avant le

ALTERNATIVE

Vous pourriez voir si passer au prochain binlog aiderait

STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=107;
START SLAVE;
SELECT SLEEP(15);
SHOW SLAVE STATUS\G

Si vous obtenez les mêmes erreurs, vous pouvez les annuler avec

STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=95849;
START SLAVE;
SELECT SLEEP(15);
SHOW SLAVE STATUS\G
3
RolandoMySQLDBA

Parfois, votre serveur maître bloque toutes les connexions entrantes après de nombreuses tentatives infructueuses. Cela se produit souvent après avoir testé d'autres problèmes liés à la connexion.

Quoi qu'il en soit, essayez les hôtes de vidage sur votre serveur maître:

mysqladmin -u root -p flush-hosts

puis redémarrez l'esclave:

service mysql restart

et vérifiez s'il est connecté:

tail -30f /var/log/mysql/error.log
1
pista329