要使用 rsync
实现数据库的定时同步,可以按照以下步骤操作:
1. 安装 rsync 和 crontab
在源服务器和目标服务器上安装 rsync
和 crontab
:
yum -y install rsync crontabs # CentOS/RHEL
sudo apt-get install rsync cron # Debian/Ubuntu
2. 设置免密登录
在目标服务器上生成 SSH 密钥并传送到源服务器,以实现免密登录:
ssh-keygen -t rsa # 生成密钥
ssh-copy-id -i ~/.ssh/id_rsa.pub root@源服务器IP # 传送公钥
3. 编写同步脚本
在源服务器上创建备份脚本(如 auto_mysqldump.sh
):
#!/bin/bash
DATE=$(date +%F)
backup_dir=/root/backup/database
mysqldump -uroot -p密码 --all-databases > ${backup_dir}/alldbs-${DATE}.sql
在目标服务器上创建同步脚本(如 auto_rsync.sh
):
#!/bin/bash
rsync -vzrtopg --progress --delete -e 'ssh -p 22' root@源服务器IP:/opt /home/backup/fileUpload/
4. 设置定时任务
使用 crontab -e
添加定时任务:
- 源服务器(每天凌晨 2 点备份):
0 2 * * * /root/backup/script/auto_mysqldump.sh
- 目标服务器(每天凌晨 2 点同步):
0 2 * * * /home/backup/script/auto_rsync.sh
5. 日志记录
在同步脚本中添加日志记录功能:
rsync -vzrtopg --progress --delete -e 'ssh -p 22' root@源服务器IP:/opt /home/backup/fileUpload/ >> /home/logs/rsync.log 2>&1
注意事项
- 确保
rsync
和cron
服务正常运行。 - 首次同步建议手动执行脚本测试。
- 对于大数据量(T 级以上),可结合
sersync
或inotify
实现实时同步。
更多参数说明:
-a
:归档模式,保留文件属性。-v
:显示详细信息。-z
:压缩传输。--delete
:删除目标端多余文件。