Hugo博客公告弹窗

宝塔面板跨服务器数据同步教程:双机备份零停机

前言

为什么需要双机备份?

  • 双服务器互备:主机宕机,备机即刻顶上
  • 双节点反代:确保服务持续可用
  • 自动化备份:目录增量同步 + 数据库全量备份
  • 简单高效:一键部署,定时任务自动执行

适用环境:宝塔面板 7.7.0 及以上版本

快速部署

⚠️ 提醒:

  • 在使用脚本前,分别在两台服务器配置同步用户(下面有步骤)
  • 数据库的root密码要一致,同步用户的密码也要一致

脚本:

curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/rsync-vps.sh && chmod +x rsync-vps.sh && ./rsync-vps.sh

配置同步用户

服务器 A 配置

  1. 登录 MySQL:
mysql -u root -p
  1. 创建同步用户tongbu并授权,仅修改密码即可,最好不要有特殊字符
CREATE USER 'tongbu'@'127.0.0.1' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'tongbu'@'127.0.0.1';
FLUSH PRIVILEGES;
  1. 验证配置:
# 查看同步用户权限
SHOW GRANTS FOR 'tongbu'@'127.0.0.1';

# 查看所有用户
SELECT user, host FROM mysql.user;

# 退出
exit

服务器 B 配置 按照服务器 A 相同步骤配置,确保用户名和密码一致。

宝塔面板配置

假设你需要把数据库同步到服务器B,在服务器B上打开宝塔面板,

数据同步配置

配置步骤:

  1. 打开宝塔面板
  2. 点击"从服务器获取"
  3. 点击"同步所有"

之后的定时同步任务就不需要再次设置点击了

定时任务

可以使用脚本设置,也可以手动设置

每天7点和下午17点执行文件同步

(crontab -l ; echo "0 7,17 * * * /root/scripts/synchronize_files.sh >/dev/null 2>&1") | crontab -

每天3点10分同步数据库

(crontab -l ; echo "10 3 * * * /root/scripts/backup_and_restore_databases.sh >/dev/null 2>&1") | crontab -

删除定时任务

crontab -l | grep -v 'synchronize_files.sh' | crontab -
crontab -l | grep -v 'backup_and_restore_databases.sh' | crontab -

清理同步用户(可选)

# 登录 MySQL
mysql -u root -p

# 删除同步用户
DROP USER 'tongbu'@'127.0.0.1';

# 刷新权限
FLUSH PRIVILEGES;

# 验证删除
SELECT user, host FROM mysql.user;

# 退出
exit

取消/恢复权限

首先撤销所有权限:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'tongbu'@'127.0.0.1';

然后重新授予所需权限(不带 WITH GRANT OPTION):

GRANT ALL PRIVILEGES ON *.* TO 'tongbu'@'127.0.0.1';

刷新

FLUSH PRIVILEGES;

验证更改是否生效:

SHOW GRANTS FOR 'tongbu'@'127.0.0.1';

CC BY-NC-SA 4.0 转载请注明
最后更新于 2025-01-15 13:02
clarity统计