MYSQL实现三台主机的级联复制,数据从master 复制到slave1,再由slave1复制到slave2。
配置方法和一般的主从复制架构一样。
唯一的区别就是中间节点必须开启log_slave_updates选项。
此选项在MYSQL8.0中为默认值,可以不用人为添加。
实现级联复制
准备三台服务器,服务器租用的按时计费的vultr AMD
master: 45.63.34.240
slave1: 66.42.75.199
slave2: 149.248.44.24
操作系统环境:8 Stream x64
永久关闭防火墙(如果你的云服务器有的话)
systemctl disable --now firewalld
安装MYSQL
yum -y install mysql-server
master配置
[mysqld]
server-id=240 #一般用ip最后一段作为服务器id
log-bin
slave1配置(中间节点)
[mysqld]
server-id=199
log-bin
read-only
log_slave_updates
slave2配置
[mysqld]
server-id=24
log-bin
read-only
重启MYSQL服务
systemctl restart mysqld
登录master数据库
登录master节点观察目前二进制日志文件的名称和位置,记住000002,156这个位置。
mysql> show master logs;
+------------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+------------------+-----------+-----------+
| vultr-bin.000001 | 179 | No |
| vultr-bin.000002 | 156 | No |
+------------------+-----------+-----------+
2 rows in set (0.00 sec)
在master节点创建复制账号并授权
CREATE USER repluser@66.42.75.199 identified by '123456';
GRANT replication slave on *.* TO repluser@66.42.75.199;
登录slave1数据库
在slave1连接主节点
CHANGE REPLICATION SOURCE TO SOURCE_HOST='45.63.34.240',
SOURCE_USER='repluser',
SOURCE_PASSWORD='123456',
SOURCE_LOG_FILE='vultr-bin.000002',
SOURCE_LOG_POS=156;
开始复制
START REPLICA;
查看复制状态
SHOW REPLICA STATUS\G
在slave1节点观察二进制日志位置
mysql> SHOW MASTER LOGS;
+------------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+------------------+-----------+-----------+
| vultr-bin.000001 | 179 | No |
| vultr-bin.000002 | 156 | No |
+------------------+-----------+-----------+
在slave1节点创建复制账号并授权
CREATE USER repluser@149.248.44.24 identified by '123456';
GRANT replication slave on *.* TO repluser@149.248.44.24;
登录slave2数据库
在slave2节点连接slave1节点
CHANGE REPLICATION SOURCE TO SOURCE_HOST='66.42.75.199',
SOURCE_USER='repluser',
SOURCE_PASSWORD='123456',
SOURCE_LOG_FILE='vultr-bin.000002',
SOURCE_LOG_POS=156;
开始复制
START REPLICA;
查看复制状态
SHOW REPLICA STATUS\G
三个节点到这里就差不多配置好了。
现在做测试,在master节点创建一个数据库
CREATE DATABASE frog1;
在slave1节点观察,数据已经同步
在slave2节点观察,数据已经同步
在master节点修改的数据,成功同步到了slave1和slave2,说明级联复制搭建成功。