小编在以前给大家介绍过关于 Mysql 数据库双机热备的配置方法有兴趣的朋友参考一下, 本节我们重点对其中的重要环节和需要注意的地方做了总结和分析
一: 介绍
mysql 版本: 5.7.20
第一个主服服务器 ip:192.168.71.139
第二个主服服务器 ip:192.168.71.141
二: 配置
第一台主服务器 192.168.71.139
1: 修改 / etc/mysql/my.cnf 文件, 注意这里的 #是注释, 不要写到配置文件中
- server-id = 141 # 服务器 id, 不能重复, 建议用 ip 后三位
- log-bin = mysql-bin
- binlog-ignore-db = mysql,information_schema # 忽略写入 binlog 日志的库
- auto-increment-increment = 2 #字段变化增量值
- auto-increment-offset = 1 # 初始字段 ID 为 1
- slave-skip-errors = all # 忽略所有复制产生的错误
2: 登陆 mysql, 创建允许其它服务器复制的账号
GRANT REPLICATION SLAVE ON *.* to 'mysql 账号'@'%' identified by '密码';
3: 使用 show master status 查询状态
第二台主服务器 192.168.71.139
1: 修改 / etc/mysql/my.cnf 文件, 此处的 server-id = 139, 其它不变
使用 show master status 查询状态
此时, 需要重新启动两台服务器的 mysql
在 192.168.71.141 执行同步语句
master_log_file 值来源于 139 服务器, 执行 show master status 后的 File 字段
master_log_file 值来源于 139 服务器, 执行 show master status 后的 Position 字段
change master to master_host='192.168.71.139',master_user='master2',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=154;
在 192.168.71.139 执行同步语句
master_log_file 值来源于 141 服务器, 执行 show master status 后的 File 字段
master_log_file 值来源于 141 服务器, 执行 show master status 后的 Position 字段
change master to master_host='192.168.71.141',master_user='master1',master_password='123456',master_log_file='mysql-bin.000002', master_log_pos=154;
到此为此配置结束, 重启 mysql, 登陆 mysql, 使用 show slave status\G 检查配置状态, 发现 Slave_IO 无法启动, 出现如下错误
The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
通过日志发现, master 和 slave 的 uuids 重复了, 因为这两台服务器是克隆的, 所以需要修改 / var/lib/mysql/auto.cnf
这里修改我只修改最后一个字母, 因为修改多了, 我 mysql 都无法启动修改完成, 重新启动 mysql, 再登陆 mysql 并执行 show slave status\G, 如下图
三: 测试
在任意一台服务器执行如下 sql
- create table tab141(id int primary key);
- create table tab139(id int primary key);
在 139 服务器执行如下 sql
insert into tab139 values(1);
在 141 服务器执行如下 sql
insert into tab141 values(2);
结果如下图:
来源: http://www.phperz.com/article/18/0226/362523.html