Maison > Article > base de données > L'ID du serveur MySQL-master-slave ne prend pas effet. Exemple de code (image)
La base de données a été configurée et toutes les configurations ont été terminées, mais au démarrage de slave;, une erreur est signalée :
ERREUR 1200 (HY000) : Le serveur n'est pas configuré comme esclave ; corriger dans le fichier de configuration ou avec CHANGE MASTER TO
Il est dit ici que je ne l'ai pas configuré en esclave, mais je l'ai clairement configuré.
Version MySQL : 5.6.19
Maître : IP du maître : 172.17.210.199
IP de l'esclave : 172.17.206.138
Regardez d'abord l'esclave 172.17. de 206.138
[root@liuyazhuang ~]# vi /etc/my.cnf [mysqld] datadir=/usr/local/mysql/data socket=/tmp/mysql.sock skip-grant-tables user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 tmpdir=/tmp [mysqld_safe] log-error=/usr/local/data/mysqld.log pid-file=/usr/local/mysql/data/mysqld.pid ###############以下是添加主从的配置 server_id = 2 log-bin = /usr/local/mysql/log/solve-bin.log master-host = 172.17.210.199 master-user = test master-pass = 123456 master-port = 3306 master-connect-retry = 60
Voici mon.cnf de l'hôte MySQL 172.17.210.199
[root@liuyazhuang ~]$ cat /etc/my.cnf [mysqld] log-bin = /u01/mysql/log/masters-bin.log read-only = 0 basedir = /u01/mysql datadir = /u01/mysql/data port = 3306 server_id = 1 socket = /tmp/mysql.sock join_buffer_size = 128M sort_buffer_size = 2M read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
J'ai essayé de redémarrer le maître et l'esclave plusieurs fois et j'ai toujours une erreur ;
Puis après le passage manuel à, la même erreur est toujours signalée
mysql> CHANGE MASTER TO MASTER_HOST='172.17.210.199', MASTER_USER='test', MASTER_PASSWORD='123456', MASTER_LOG_FILE='masters-bin.000003', MASTER_LOG_POS=120; Query OK, 0 rows affected, 2 warnings (0.04 sec)
Exécutez START slave sur le serveur esclave ; commande pour démarrer l'esclave
mysql> START slave;
Erreur :
ERREUR 1200 (HY000) : Le serveur n'est pas configuré en esclave ; correctif dans le fichier de configuration ou avec CHANGE MASTER TO
Vérifiez donc le journal
Vérifiez le Mysql. journal des erreurs sur SLAVE172.17.206.138, il existe une telle phrase :
141009 6:06:29 [ERREUR] L'identifiant du serveur n'est pas défini, ne démarrera pas l'esclave
ce qui signifie que l'identifiant du serveur de l'esclave n'est pas défini.
C'est étrange. J'ai clairement spécifié l'identifiant du serveur dans le fichier de configuration et j'ai redémarré le service MySQL. Cela ne fonctionne-t-il pas ?
Exécutez la commande "show variables like 'server_id';" sur le maître et l'esclave respectivement.
-------Vérifiez le port sur la machine esclave. Le paramètre de dénomination
mysql> mysql> SHOW VARIABLES LIKE 'server_id'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | server_id | 0 | +---------------+-------+ 1 row in set (0.00 sec)
est 2, comment se fait-il qu'il devienne 0.
-------La vue sur la machine hôte
mysql> SHOW VARIABLES LIKE 'server_id'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | server_id | 1 | +---------------+-------+ 1 row in set (0.00 sec)
est la même que les paramètres.
Comme le fichier de paramètres ne prend pas effet, essayez de le définir dans la commande de base de données : exécutez la commande sur la machine esclave 172.17.206.138
mysql > SET GLOBAL server_id=2;
Exécutez le démarrage de l'esclave et affichez l'esclave sur la machine esclave 172.17 .206.138 à nouveau statut, réussi.
Attention ! ! ! Étant donné que la commande "SET GLOBAL server_id=;" sera perdue après le redémarrage du service mysql, elle doit être écrite dans le fichier de configuration.
Mais pourquoi le fichier my.cnf que j'ai modifié auparavant ne fonctionnait-il pas ?
Après une inspection minutieuse, j'ai découvert qu'il y avait [mysqld] et [mysqld_safe] dans la configuration. Le contenu de la configuration modifié était essentiellement placé sous [mysqld_safe]. Est-il important que les fichiers de configuration nouvellement ajoutés soient placés à des emplacements différents ? J'ai donc essayé de mettre la partie modifiée dans le fichier de configuration sous [mysqld], donc je l'ai changé comme ceci :
[root@liuyazhuang]# cat /etc/my.cnf [mysqld] datadir=/usr/local/mysql/data socket=/tmp/mysql.sock skip-grant-tables user=mysql symbolic-links=0 tmpdir=/tmp server_id = 2 log-bin = /usr/local/mysql/log/solve-bin.log master-host = 172.17.210.199 master-user = test master-pass = 123456 master-port = 3306 master-connect-retry = 60 [mysqld_safe] log-error=/usr/local/data/mysqld.log pid-file=/usr/local/mysql/data/mysqld.pid
Comme le montre l'image, le contenu marqué dans l'image est modifié from [mysqld_safe] Après avoir modifié
sous [mysqld], synchronisez à nouveau et c'est réussi !
mysql> mysql> STOP slave; Query OK, 0 rows affected (0.05 sec) mysql> START slave; Query OK, 0 rows affected (0.00 sec)
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!