@lgh-dev
2019-04-19T10:05:10.000000Z
字数 1593
阅读 1330
MySQL
| IP | 服务ID | 角色 |
|---|---|---|
| 120.78.139.204 | 204 | master |
| 106.13.65.208 | 208 | slave |
5.7.25 主库和从库版本尽量保持一致
1、修改my.cnf配置文件
一般mysql配置文件在目录/etc下,叫my.cnf (如果找不到的话也有可能在这些目录下:/etc/my.cnf,/etc/mysql/my.cnf,/usr/local/mysql/etc/my.cnf,~/.my.cnf)
在[mysqld]段下添加:
#要给从库同步的库binlog-do-db=knowshare#不给从机同步的库(多个写多行)binlog-ignore-db=mysqlbinlog-ignore-db=information_schemabinlog-ignore-db=performance_schemabinlog-ignore-db=sys#自动清理 7 天前的log文件,可根据需要修改expire_logs_days=7# 启动二进制日志log-bin=mysql-bin# 服务器唯一ID,一般取IP最后一段server-id=204
重启mysql服务器
systemctl restart mysqld #centos7以上版本
测试log-bin(二进制日志)是否开启如下图

建立账户并授权slave
//分配文件从库复制权限给backup用户mysql> grant file,replication slave on *.* to 'backup'@'%' identified by '123456';#刷新权限mysql> flush privileges;
查询主服务器的状态

如果如上图所示,说明主库信息基本已经配置完毕
拷贝数据
把主库的数据拷贝出来一份倒入到从库中,先保证主从库内容一致
修改my.cnf文件。
在[mysqld]段下添加:
server-id=208#加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错。read_only = 1master_info_repository=TABLErelay_log_info_repository=TABLE
在从机上设置主服务器关联
# mysql -u root -p //登录mysqlmysql> stop slave; //停止从库mysql> change master to> master_host = '120.78.139.204',> master_user='backup', #备份用户名> master_password='123qwe', #密码> master_log_file='mysql-bin.000003', #上面截图,且要与master的参数一致> master_log_pos = 1155; #上面截图,且要与master的参数一致mysql> start slave;
master_log_file和master_log_pos的值要和查看主库状态的内容要一致,一个指的是二进制文件,一个指的是二进制日志的位置
查看从库的状态

如果途中IO线程和SQL都是YES代表成功了,
测试主从复制
然后测试在主库数据库中修改或添加一条纪录,查看一下从库是否会同步即可
如果失败,可能是如下原因
可以先查看msyql的错误日志
- 网络原因
- 主从复制用户密码不对
- 二进制日志pos不对
如果都不是以上的原因,那就得看你能不能连接上主库数据库
[root@local ~] # mysql -u backup -h 120.78.139.204 -p
如果连不上,则极有可能是你的主服务器的3306端口没开,那就去吧防火墙规则改一下,我用的是阿里云服务器,所以直接就在控制台中,加了个3306端口的安全规则,重启ecs实例就可以了
如果都能测试成功,那么就没什么大问题了,Enjoy It!!