Maison  >  Article  >  base de données  >  L'ID du serveur MySQL-master-slave ne prend pas effet. Exemple de code (image)

L'ID du serveur MySQL-master-slave ne prend pas effet. Exemple de code (image)

黄舟
黄舟original
2017-03-11 14:04:513075parcourir

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!

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