數據庫已搭建完成,各種配置均已完成,但是在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)
在從庫服務器執行START slave;命令啟動slave
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
如圖,就是將圖中標注的內容從[mysqld_safe]下修改到[mysqld]下
修改之后,再次同步,成功了!
mysql> mysql>?STOP?slave; Query?OK,?0?rows?affected?(0.05?sec) mysql>?START?slave; Query?OK,?0?rows?affected?(0.00?sec)