@lgh-dev
2019-04-19T10:05:10.000000Z
字数 1593
阅读 1242
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=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-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 = 1
master_info_repository=TABLE
relay_log_info_repository=TABLE
在从机上设置主服务器关联
# mysql -u root -p //登录mysql
mysql> 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!!