You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为运行中的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
      
  • 配置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纳入故障转移或自动重加入逻辑。

3. 确保C的变更不会回传至A/B

  • 除了log_slave_updates=OFF的配置,还要:
    • 禁止A/B的复制配置指向C,确保A/B不会从C同步数据。
    • 给C上的开发账号最小权限,避免授予REPLICATION SLAVE权限,防止误操作将C设为主库。

内容的提问来源于stack exchange,提问作者uzurik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:43:15