如何实现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
相关产品推荐
相关产品推荐

