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

如何实现Server A、B到Server C的Plesk实时复制(含MySQL同步)

Plesk环境下多源MySQL实时同步到Server C的实现方法

前提准备

  • 确保三台服务器的MySQL版本完全一致(主从版本不匹配可能引发同步兼容性问题)
  • Server C预留足够磁盘空间,用于存储Server A、B的所有同步数据库数据
  • 三台服务器之间网络互通,开放MySQL服务端口(默认3306,若自定义需对应开放)

配置主库(Server A、Server B)

1. 修改MySQL配置文件

编辑MySQL配置文件(路径通常为/etc/my.cnf或/etc/mysql/my.cnf),添加以下参数:

# Server A的server-id设为1,Server B设为2,三者必须唯一
server-id = 1
log-bin = mysql-bin
# 指定需要同步的数据库,多个数据库可重复此行
binlog-do-db = your_database_name
# 忽略系统库同步,可选配置
binlog-ignore-db = mysql
# 自动清理7天前的二进制日志,防止磁盘溢出
expire_logs_days = 7

2. 重启MySQL服务

根据操作系统执行对应命令:

# CentOS/RHEL 系统
systemctl restart mysqld

# Debian/Ubuntu 系统
systemctl restart mysql

3. 创建同步专用账号

通过Plesk面板操作:

  • 进入Server A/B的Plesk后台 > 工具与设置 > 数据库服务器 > MySQL > 点击「登录到数据库服务器」
  • 执行以下SQL语句创建账号并授权:
CREATE USER 'repl_user'@'Server_C_IP' IDENTIFIED BY 'your_strong_password';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl_user'@'Server_C_IP';
FLUSH PRIVILEGES;

4. 导出主库数据(保证初始数据一致)

  • 先锁定主库避免写入:
FLUSH TABLES WITH READ LOCK;
  • 导出目标数据库:
mysqldump -u root -p your_database_name > db_backup.sql
  • 解锁主库恢复写入:
UNLOCK TABLES;

重复此步骤完成Server A和Server B的数据库备份。

配置从库(Server C)

1. 修改MySQL配置文件

编辑配置文件添加以下参数:

server-id = 3  # 必须与Server A、B的server-id唯一
relay-log = mysql-relay-bin
log-slave-updates = 1  # 可选,允许从库记录同步操作,便于级联复制
read-only = 1  # 设置从库只读,普通用户无法修改数据(管理员账号不受限)

2. 重启MySQL服务

同主库的重启命令,根据系统执行。

3. 导入主库备份数据

  • 先创建对应数据库:
CREATE DATABASE your_database_name;
  • 分别导入Server A和Server B的备份文件:
mysql -u root -p your_database_name < db_backup_A.sql
mysql -u root -p your_database_name < db_backup_B.sql

4. 配置多源复制通道

MySQL 5.7及以上版本支持多源复制,为Server A、B分别创建同步通道:

配置Server A同步通道

CHANGE MASTER TO MASTER_HOST='Server_A_IP',
MASTER_USER='repl_user',
MASTER_PASSWORD='your_strong_password',
MASTER_LOG_FILE='mysql-bin.000001',  # 替换为Server A执行SHOW MASTER STATUS;得到的File值
MASTER_LOG_POS=154  # 替换为Server A执行SHOW MASTER STATUS;得到的Position值
FOR CHANNEL 'server_a';

配置Server B同步通道

CHANGE MASTER TO MASTER_HOST='Server_B_IP',
MASTER_USER='repl_user',
MASTER_PASSWORD='your_strong_password',
MASTER_LOG_FILE='mysql-bin.000001',  # 替换为Server B执行SHOW MASTER STATUS;得到的File值
MASTER_LOG_POS=154  # 替换为Server B执行SHOW MASTER STATUS;得到的Position值
FOR CHANNEL 'server_b';

5. 启动同步服务

START SLAVE FOR CHANNEL 'server_a';
START SLAVE FOR CHANNEL 'server_b';

同步状态检查与维护

  • 查看Server A同步状态:
SHOW SLAVE STATUS FOR CHANNEL 'server_a'\G
  • 查看Server B同步状态:
SHOW SLAVE STATUS FOR CHANNEL 'server_b'\G

需确保Slave_IO_Running和Slave_SQL_Running两项均为Yes,说明同步正常。

  • 若通过Plesk新增需要同步的数据库,需在对应主库的MySQL配置文件中添加binlog-do-db参数,重启MySQL后生效。
  • 定期清理二进制日志,避免磁盘空间被占满。

同步验证

  • 在Server A的目标数据库中插入一条测试数据,检查Server C是否同步成功
  • 同理在Server B执行写入操作,验证数据是否同步到Server C

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:17:28