數據庫已搭建完成,各種配置均已完成,但是在start slave ;的時候,報錯:
ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO
這裏說,我沒有配置爲從機,但我明明配置過的啊。
MySQL版本:5.6.19
主:master IP : 172.17.210.199
從:slave IP :172.17.206.138
先看看從機172.17.206.138的my.cnf
- [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
這是MySQL主機172.17.210.199的my.cnf
- [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
接着手動chang to 後還是一樣報錯
- 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)
- mysql> START slave;
報錯:
ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO
於是查看日誌
1.查看SLAVE172.17.206.138上的Mysql報錯日誌,有這麼一句:
141009 6:06:29 [ERROR] Server id not set, will not start slave
意思是,slave的server-id沒有設置。
那就奇怪了,我明明在配置文件裏面指定了server-id的了,並且有重啓mysql服務,難道不起效?
分別在主從上執行命令“show variables like 'server_id';”。
-------從機上面查看端口
- mysql> mysql> SHOW VARIABLES LIKE 'server_id';
- +---------------+-------+
- | Variable_name | Value |
- +---------------+-------+
- | server_id | 0 |
- +---------------+-------+
- 1 row in set (0.00 sec)
命名設置的是2,怎麼會變成0
-------主機上面查看
- mysql> SHOW VARIABLES LIKE 'server_id';
- +---------------+-------+
- | Variable_name | Value |
- +---------------+-------+
- | server_id | 1 |
- +---------------+-------+
- 1 row in set (0.00 sec)
跟設置的一樣。
既然參數文件不生效,就試試在數據庫命令裏面設置:在從機 172.17.206.138上執行命令
- mysql > SET GLOBAL server_id=2;
再次在從機 172.17.206.138上執行slave start和show slave status,成功了。
注意!!!由於“SET GLOBAL server_id=;”命令會在mysql服務重啓後丟失,所以一定要寫到配置文件裏面。
但爲什麼我之前修改了my.cnf文件不起效?
仔細排查,發現配置裏面有[mysqld]和[mysqld_safe],之前將修改的配置內容基本都放在了[mysqld_safe]下面,新增的配置文件放的位置不一樣也有關係?於是我嘗試把配置文件裏修改的部分放在[mysqld]下面,於是改成這樣:
- [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
修改之後,再次同步,成功了!
- mysql>
- mysql> STOP slave;
- Query OK, 0 rows affected (0.05 sec)
- mysql> START slave;
- Query OK, 0 rows affected (0.00 sec)
---------------------
原文:https://blog.csdn.net/zwc2xm/article/details/72887239