
1.1 目标:RPO≤5分钟,RTO≤30分钟,业务零数据丢失为设计目标。
1.2 范围:Web静态文件、应用代码、MySQL/MariaDB、配置文件、日志与镜像快照。
2.1 多机房部署:在日本至少使用两个可用区(AZ-A / AZ-B),主站在AZ-A,备份/读副本在AZ-B。
2.2 多层备份:本地快照(LVM/设备快照)+增量备份(rsync/borg)+异地对象存储(rclone->S3/OSS)。
3.1 全量+二进制日志:每日凌晨做全量备份(mariabackup或mysqldump),启用binlog用于点时间恢复。
3.2 实操命令:
3.2.1 全量(mariabackup): mariabackup --backup --target-dir=/backup/full/`date +%F` --user=backup --password=xxx
3.2.2 准备: mariabackup --prepare --target-dir=/backup/full/`date +%F`
3.2.3 增量: mariabackup --backup --target-dir=/backup/inc/`date +%F` --incremental-basedir=/backup/full/`date +%F`
4.1 本地快照(LVM)步骤:停写或短停服务 -> lvcreate -L1G -s -n snap /dev/vg/app -> mount /dev/vg/snap /mnt/snap -> rsync -a /mnt/snap/ /backup/snap-`date +%F`/ -> umount /mnt/snap -> lvremove /dev/vg/snap。
4.2 增量同步(rsync)示例cron: 每5分钟增量到同城备机:*/5 * * * * rsync -az --delete --link-dest=/backup/current /var/www/ backup@10.0.0.2:/data/backup/site/
4.3 去中心化备份到对象存储:使用rclone或s3cmd上传并加密:rclone copy /backup remote:bucket/site-backup --crypt-password=xxx
5.1 工具:使用BorgBackup做去重加密增量备份:borg init --encryption=repokey /data/borgrepo
5.2 定时任务与保留策略(示例): borg create repo::'{hostname}-{now:%Y-%m-%d-%H%M}' /var/www && borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6。
5.3 校验:定期 borg check 与对象存储校验,脚本返回非0触发告警。
6.1 数据库恢复(点位恢复)示例:停止mysql -> 准备备份 mariabackup --prepare --target-dir=/backup/full/2026-06-01 -> 复制回datadir mariabackup --copy-back --target-dir=... -> chown -R mysql:mysql /var/lib/mysql -> systemctl start mysql -> 使用 mysqlbinlog 恢复到指定时间。
6.2 应用切换:使用Keepalived+HAProxy或浮动IP切换,Keepalived配置示例:vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass xxx } virtual_ipaddress { 10.0.0.10 } }
6.3 验证:流量切换后执行健康检查(curl /health)并确认日志、会话策略是否需要回写。
7.1 监控:Prometheus + node_exporter + mysqld_exporter,备份脚本在退出码非0时通过Alertmanager触发Slack/邮件。
7.2 安全:备份加密(borg repokey或GPG),S3端启用服务端加密与最小权限IAM。
7.3 运营流程:每月演练恢复一次,编写Runbook并保存恢复时间与问题清单。
8.回答:采用热备/快照方式(LVM快照或存储快照)先冻结瞬间点位,再在快照上执行rsync或备份,生产写入影响时间极短;数据库用mariabackup或mysqldump --single-transaction结合binlog,避免长事务锁表;把备份IO限制到低优先级(ionice、rsync --bwlimit)。
9.回答:1) 在新机房准备空盘与相同环境;2) 从对象存储下载最新全量并增量数据(rclone copy /borg extract);3) 恢复数据库(mariabackup --copy-back并chown)并应用binlog到目标时间;4) 配置Keepalived/HAProxy并切换虚拟IP或调整DNS(TTL提前设置短);5) 完整功能测试后将流量切回。
10.回答:通过以下手段量化:启用binlog并定期备份、设置RPO目标(例如5分钟)并验证通过恢复到任意时间点;演练并记录每次恢复能否达到RPO/RTO;使用备份校验(checksum)与异地冗余保证数据完整性,结合监控告警证明备份链路始终可用。