共计 1302 个字符,预计需要花费 4 分钟才能阅读完成。
在实际使用 MySQL 的时候我们有时要增加一些新的库进行主从同步,所以可以通过修改 my.cnf 文件以及在主库上添加用户连接权限就可以实现主从同步,而在做主从同步的时候碰到几个问题这里就和大家说一下,至于如何构建主从同步这里就不再多说了,相信在网上能找到一大堆,这里就稍稍提几个关键点, 在从库下的 my.cnf 添加如下几行:
server-id = 2# 一般主库是 1,从库可以除 1 以外的数字
log-bin=mysql-bin# 从库是读取主库 logbin 文件的,这行一定要加,不然会报错
report-host=192.168.168.253# 主库的 ip
relay-log = mysql-relay-bin
replicate-wild-do-table=database.%# 需要同步主库里的某一个库,多个库可自行添加
在主库里添加用户使从库可连接,这里需要注意的是给权限时密码必须是密文,不然会报错误 1372,我们可以用
mysql>select password(‘password’);# 生成 41 位的十六进制数
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘test_backup’@’192.168.168.254’ IDENTIFIED BY PASSWORD ‘*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19’;# 要这样给权限
在主库权限给好后从库里去修改连接主库的状态值
change master to master_host=’192.168.168.253′,master_user=’test_backup’,master_password=’test_backup’,master_log_file=’mysql-bin.XXXXXX’,master_log_pos=XXX;
slave start;
然后 show slave status\G 看下面 2 项目是 yes 就行了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
按理说主从同步到这里应该是结束了,但是,我在主库里查询以一下语句,再来看从库的状态时就会报错 1146,刚刚开始还以为是库表文件损坏但是都没有用,于是上网去找很多方法都没有用到后来想到报错是从库里找不到相应的表,与是就看下从库里果然没有任何库,因为主从同步只会同步并不会新建库,于是就到主库里导出要同步的库
mysqldump -uroot -p database > database.sql
在从库里建同名的库并导入,注意要和主库里用同样的字符集
mysql> CREATE DATABASE `DATABASE` CHARACTER SET utf8 COLLATE utf8_general_ci
mysql>source database.sql# 如果不在 database.sql 路径进入 mysql 要写 database.sql 的路径
mysql>slave stop;
再次调整最新的状态值再 slave start,这样主从同步就做好了。
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-02/140454.htm