如何为运行中的MaxScale自动故障转移配置添加开发服务器?
实现步骤
1. 搭建服务器C作为A/B的单向从库
- 同步主库数据:
- 在当前主库(A或B)执行导出命令,生成一致性快照:
mysqldump -h 主库IP -u root -p --single-transaction --master-data=2 --all-databases > full_backup.sql - 将备份文件传到C服务器,导入数据:
mysql -u root -p < full_backup.sql
- 在当前主库(A或B)执行导出命令,生成一致性快照:
- 配置C的
my.cnf核心参数:[mysqld] server-id=3 # 必须与A、B的server-id唯一 log_bin=mysql-bin log_slave_updates=OFF # 禁止把复制来的变更写入自身binlog,同时自身的变更也不会向外同步 relay_log=relay-bin super_read_only=ON # 仅超级权限用户可写入,避免普通账号误操作 - 启动C的复制进程:
- 查看备份文件里的
CHANGE MASTER TO语句,或在主库执行SHOW MASTER STATUS;获取binlog文件名和位置。 - 在C的MySQL客户端执行:
CHANGE MASTER TO MASTER_HOST='MaxScale读写VIP地址', # 用MaxScale的主库访问地址,自动跟随A/B的主库切换 MASTER_USER='复制账号', MASTER_PASSWORD='复制密码', MASTER_LOG_FILE='主库binlog文件名', MASTER_LOG_POS=主库binlog位置; START SLAVE; - 验证复制状态:
SHOW SLAVE STATUS\G,确认Slave_IO_Running和Slave_SQL_Running均为Yes。
- 查看备份文件里的
2. 隔离C与MaxScale故障转移集群
- 修改MaxScale配置文件(
/etc/maxscale.cnf):- 不要将C添加到故障转移相关的服务器组(如
[servers]下的A、B所在列表)。 - 确保监控模块(如
MariaDB-Monitor)仅监控A和B,让MaxScale完全忽略C的存在,避免将C纳入故障转移或自动重加入逻辑。
- 不要将C添加到故障转移相关的服务器组(如
3. 确保C的变更不会回传至A/B
- 除了
log_slave_updates=OFF的配置,还要:- 禁止A/B的复制配置指向C,确保A/B不会从C同步数据。
- 给C上的开发账号最小权限,避免授予
REPLICATION SLAVE权限,防止误操作将C设为主库。
内容的提问来源于stack exchange,提问作者uzurik
相关产品推荐
相关产品推荐

