数字档案馆系统容灾备份差的实操级解决方案落地指南
一、前置:现有容灾备份现状快速评估
先通过3条命令排查现有备份的核心问题,无需专业工具,直接执行即可:
- 统计备份文件数量:
ls -l /data/archive_backup | wc -l,数量为0或每周少于2次为异常 - 查询最近备份日志:
grep "backup" /var/log/archive_system.log | tail -n 20,查看是否有「备份失败」「磁盘空间不足」报错 - 校验现有备份完整性:
for file in /data/archive_backup/.tar.gz; do echo "$(md5sum $file) $file" >> /data/archive_backup/md5_check.log; done,对比两次生成的MD5值是否一致
二、本地增量备份机制落地(解决资源占用高问题)
2.1 rsync增量备份配置
rsync是Linux自带的增量同步工具,无需额外安装(未安装则执行对应命令):
- CentOS安装:
yum install rsync -y - Ubuntu安装:
apt install rsync -y
创建定时任务实现每日自动增量备份,步骤如下:
- 新建备份定时任务文件:
vi /etc/cron.d/archive_backup - 写入以下内容(凌晨2点自动执行,同步至/data/archive_backup/下按日期命名的目录):
0 2 root rsync -avz --delete /var/archive_data/ /data/archive_backup/incr_$(date +%Y%m%d)/ >> /var/log/rsync_backup.log 2>&1 - 给定时任务文件加权限:
chmod 600 /etc/cron.d/archive_backup
重点说明:rsync参数含义:-a保留文件权限,-v显示同步过程,-z压缩传输,--delete删除源系统已删除的备份文件,避免备份数据冗余。
三、异地灾备节点搭建(解决单点故障问题)
3.1 SSH免密登录配置
异地节点需单独部署,建议和本地节点跨机房(IP示例:本地192.168.1.5,异地192.168.1.100):
- 生成免密密钥:
ssh-keygen -t rsa -b 4096 -f /root/.ssh/archive_backup_key -N "" - 复制公钥到异地节点(用户需有写入权限,无权限则联系运维开通):
ssh-copy-id -i /root/.ssh/archive_backup_key.pub backup@192.168.1.100 - 必须设置密钥权限:
chmod 600 /root/.ssh/archive_backup_key,否则rsync会拒绝连接
3.2 异地同步脚本配置

创建自动同步到异地的脚本,内容如下(直接复制即可):
!/bin/bash
异地灾备脚本
LOCAL_BACKUP="/data/archive_backup/incr_$(date +%Y%m%d)"
REMOTE_USER="backup"
REMOTE_IP="192.168.1.100"
REMOTE_PATH="/mnt/archive_remote_backup"
同步本地增量备份到异地
rsync -avz --rsync-path="sudo rsync" -e "ssh -i /root/.ssh/archive_backup_key" $LOCAL_BACKUP $REMOTE_USER@$REMOTE_IP:$REMOTE_PATH/
校验异地备份完整性
ssh -i /root/.ssh/archive_backup_key $REMOTE_USER@$REMOTE_IP "md5sum $REMOTE_PATH/incr_$(date +%Y%m%d)/ >> $REMOTE_PATH/md5_remote.log"
本地保留最近7天备份,自动删除更早的
find /data/archive_backup/ -name "incr_" -type d -mtime +7 -exec rm -rf {} \;
脚本部署执行命令:vi /usr/local/bin/archive_remote_backup.sh,粘贴内容后执行:chmod +x /usr/local/bin/archive_remote_backup.sh;添加定时任务(凌晨3点执行):echo "0 3 root /usr/local/bin/archive_remote_backup.sh >> /var/log/remote_backup.log 2>&1" >> /etc/cron.d/archive_remote
四、备份有效性强制校验(解决备份无效问题)
若备份后未校验,灾难发生时才发现备份损坏,需每周日执行全量备份+校验:
- 新建全量备份+校验脚本,内容如下:
!/bin/bash FULL_BACKUP_PATH="/data/archive_backup/full_$(date +%Y%m%d).tar.gz" 生成全量备份 tar -czvf $FULL_BACKUP_PATH /var/archive_data/ >> /var/log/full_backup.log 2>&1 校验备份完整性(能列出内部文件则说明正常) tar -tzf $FULL_BACKUP_PATH > /dev/null if [ $? -eq 0 ]; then echo "$(date '+%Y-%m-%d %H:%M') 全量备份校验通过,路径:$FULL_BACKUP_PATH" >> /data/archive_backup/backup_valid.log else echo "$(date '+%Y-%m-%d %H:%M') 全量备份校验失败,请立即处理" >> /data/archive_backup/backup_error.log 配置邮件告警(需先在/etc/mail.rc中添加SMTP配置) echo "归档系统全量备份失败,请检查备份服务器磁盘空间或数据一致性" | mail -s "归档备份严重告警" admin@yourdomain.com fi - 添加校验定时任务(每周日凌晨4点执行):
echo "0 4 0 root /usr/local/bin/full_backup_check.sh >> /var/log/full_check.log 2>&1" >> /etc/cron.d/full_backup_task
五、季度灾备切换演练(解决切换失效问题)
每季度必须执行1次,验证灾备节点可正常接管,步骤如下:
- 停生产系统:
systemctl stop archive_system.service - 同步异地备份到测试节点(需提前部署版本一致的测试系统):
rsync -avz --delete backup@192.168.1.100:/mnt/archive_remote_backup/incr_$(date +%Y%m%d)/ /var/archive_test_data/ - 启动测试系统并验证:
systemctl start archive_test.service,执行命令对比数据一致性:curl http://测试节点IP:8080/api/archives?limit=10,结果需与生产系统查询结果完全一致 - 切回生产系统:
systemctl start archive_system.service; systemctl stop archive_test.service - 记录演练结果:所有步骤输出写入
/var/log/backup_drill.log,保存归档
以上操作全部落地后,可实现本地增量备份7天内可恢复、异地备份跨机房冗余、每周校验备份有效性,彻底解决容灾备份差的问题,所有命令和配置均直接可用,无额外调整要求。