准备阶段
从零开始克隆两台虚拟机,更改IP,并启动xshell连接上,这里4.80为master,4.90为slave

分别在两个机器上下载好MySQL,并启动,修改密码。

数据库配置
成功进入并完成配置后退出,开始下一步,关于4.80机器的配置

这是4.90机器的配置:

关于修改MySQL配置的解释:
核心参数:
server-id
-
每台MySQL服务器唯一标识
-
主从架构中必须不同
log_bin
-
开启二进制日志,记录所有数据变更
-
复制的基础
relay_log
-
中继日志,从库接收主库binlog后暂存的位置
binlog_format = ROW
-
推荐的行格式,更安全的数据同步
复制关键参数:
log_slave_updates = ON
-
从库也将自己的更新写入binlog
-
必须开启,否则无法实现双向复制
auto_increment_increment = 2
-
自增ID每次增加2
auto_increment_offset = 1或2
-
自增ID起始值
-
避免两台服务器生成相同ID造成冲突
这些配置确保了数据可以安全地双向同步。
完成配置后重启数据库:
systemctl restart mysqld
再次进入MySQL中进行配置,两台机器都需要配置:


关于配置的解释:
-
'repl':复制专用用户名 -
'192.168.4.%':只允许同网段IP连接,更安全 -
IDENTIFIED BY:设置复制密码 -
REPLICATION SLAVE:复制所需的最小权限 -
*.*:对所有数据库和表生效
创建库,表以便后续使用:

这里在text_db库中创建表即可。
配置双向复制
在192.168.4.90和80上查看master状态
SHOW MASTER STATUS;
记录下 File 和 Position 值

进入80机,做以下操作:


90机器同理:

CHANGE MASTER TO MASTER_HOST='192.168.4.90', -- 对端服务器IP MASTER_USER='repl', -- 复制用户名 MASTER_PASSWORD='密码', -- 复制密码 MASTER_LOG_FILE='mysql-bin.000001', -- 对端binlog文件名 MASTER_LOG_POS=1035; -- 对端binlog位置
配置完成后查看是否成功:
SHOW SLAVE STATUS\G,分别在两个机器上输入下面的命令查看Slave_IO_Running 和 Slave_SQL_Running 是否都是 Yes

我的已经成功了,接下来进行下一步。
测试双向复制
在80机上插入数据:

然后在90机上查询数据,看看能否查询到:

同理再反向操作一下,90插入数据80查询:


可以看到数据能够双向同步,接下来进行下一步。
验证
80机上执行如下操作:

90机同理执行:

观察 Seconds_Behind_Master 延迟:
watch -n 5 "mysql -e 'SHOW SLAVE STATUS\G' | grep Seconds_Behind_Master"

使用Percona Toolkit
下载好Percona Toolkit:
rpm -ivh percona-toolkit-3.5.7-1.el7.x86_64.rpm


安装好之后执行命令查看结果

559

被折叠的 条评论
为什么被折叠?



