MySQL之-主從server-id不生效的示例代碼(圖)

數據庫已搭建完成,各種配置均已完成,但是在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之-主從server-id不生效的示例代碼(圖)

MySQL之-主從server-id不生效的示例代碼(圖)

修改之后,再次同步,成功了!

mysql>  mysql>?STOP?slave;  Query?OK,?0?rows?affected?(0.05?sec)    mysql>?START?slave;  Query?OK,?0?rows?affected?(0.00?sec)

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享