1.
方案目标与前期评估
目标:确保马来西亚VPS在硬件故障、数据损坏或区域性故障时能在RTO(恢复时间目标)和RPO(恢复点目标)内恢复。评估步骤:1) 列出关键服务(web、db、缓存);2) 为每项服务定义RTO/RPO;3) 评估存储大小、带宽和成本;4) 记录当前服务器配置(ip、软件版本、挂载点)。
2.
备份策略设计(全备/增量/快照)
分级策略:1) 日常增量+每周全量;2) 对数据库使用逻辑/物理备份并保留二进制日志;3) 快照用于快速回滚(LVM/ZFS或云快照);4) 保留策略示例:最近7天逐日、最近4周逐周、最近12个月逐月。
3.
文件备份实现(使用rsync与rclone)
推荐组合:rsync用于本地到本地/同城节点同步,rclone用于上云(S3兼容)。示例命令:rsync -aAX --delete --link-dest=/backup/last /var/www/ /backup/$(date +%F)/;rclone sync /backup/$(date +%F) s3:mybucket/ma-vps/$(date +%F) --s3-storage-class=STANDARD_IA。定时:编辑 crontab(sudo crontab -e)加入:0 2 * * * /usr/local/bin/backup-files.sh >> /var/log/backup.log 2>&1。
4.
快照与镜像(LVM、ZFS、云快照)
步骤(LVM快照):1) lvs 确认逻辑卷名;2) lvcreate -L1G -s -n snap_www /dev/vg0/www;3) mount /dev/vg0/snap_www /mnt/snap && rsync -a /mnt/snap/ /backup/snap-$(date +%F)/;4) umount /mnt/snap && lvremove -f /dev/vg0/snap_www。云快照:使用VPS面板API触发快照并下载至对象存储作为异地备份。
5.
数据库备份与增量方案
MySQL/MariaDB:逻辑备份(mysqldump)用于小库,命令示例:mysqldump --single-transaction --quick --routines -u root -p'密码' dbname | gzip > /backup/dbname-$(date +%F).sql.gz;物理备份(Percona XtraBackup)用于大库:xtrabackup --backup --target-dir=/backup/xb-$(date +%F) && xtrabackup --prepare --target-dir=/backup/xb-$(date +%F)。增量:配置binlog并记录位置,增量恢复按binlog回放。
6.
实时复制与跨机房容灾设计
主从复制:配置主库开启binlog并创建复制用户;从库使用 CHANGE MASTER TO MASTER_HOST='主IP', MASTER_USER='repl', MASTER_PASSWORD='pass', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=xxxx; START SLAVE;。高可用:使用Galera实现多主同步或使用异步复制+keepalived/virtual IP做主动切换。跨机房建议:主位于主数据中心,异地从位于其他城市或云区。
7.
自动故障切换(Keepalived + HAProxy + DNS)
步骤:1) 在两台节点安装keepalived,配置vrrp_instance并分配浮动IP;2) 配置HAProxy做健康检查与流量转发;3) DNS设置低TTL(如60秒)并配置备份DNS记录以在主站不可达时指向浮动IP或备用负载均衡。keepalived示例片段:vrrp_instance VI_1 { state MASTER; interface eth0; virtual_router_id 51; priority 100; virtual_ipaddress { 10.0.0.100 } }
8.
自动化与监控(Ansible、Cron、Prometheus)
自动化:用Ansible管理备份脚本部署与恢复流程playbook;示例任务包括分发backup-files.sh、设置cron/systemd timer、配置rclone。监控:部署Prometheus采集ping/http/db可用性,Alertmanager发送告警;结合healthcheck脚本检测备份成功(检查备份时间戳与校验和),并在失败时通过Slack/邮件告警。
9.
备份安全、加密与生命周期管理
安全措施:1) 备份传输使用TLS(rclone配置s3端点启用HTTPS);2) 在上传前使用GPG加密:gpg --symmetric --cipher-algo AES256 file && mv file.gpg /backup/;3) 对象存储设置生命周期:转冷存、过期删除;4) 最小权限:备份账户仅有读/写目标桶权限。
10.
恢复演练与验证步骤
恢复演练流程(每季度):1) 从最近完整备份选择一套文件+数据库;2) 在隔离环境启动新VPS或本地虚拟机;3) 使用rclone下载备份并校验sha256sum;4) 恢复数据库:对于mysqldump,mysql -u root -p dbname < dbname.sql;对于xtrabackup,按文档prepare并拷入数据目录;5) 启动服务并运行全面集成测试。记录耗时以调整RTO。
11.
问:当主VPS故障需要全量恢复时具体步骤是什么?
答:第一步:在备用VPS上准备操作系统与相同软件版本;第二步:从对象存储用rclone download 下载最新全备与最近增量;第三步:校验sha256sum与GPG解密(如已加密);第四步:恢复文件:rsync -a /恢复路径/ /var/www/;第五步:恢复数据库:若为xtrabackup,执行xtrabackup --copy-back并chown mysql:mysql;若为mysqldump,直接导入并重放binlog;第六步:更新keepalived/HAProxy并检查健康,最后切换DNS或浮动IP并验证业务。
12.
问:如何在马来西亚VPS上实现快速自动故障切换?
答:部署两台或多台节点在不同可用区/机房,使用keepalived配置浮动VIP并配合HAProxy做流量分发;把服务状态(HTTP/ TCP/DB)作为vrrp脚本的健康检查触发优先级调整;将DNS TTL降到60秒并使用健康监控脚本在外部DNS或CDN上自动修改指向以实现跨站点切换。
13.
问:常见失误与注意事项有哪些?
答:常见错误:未定期演练恢复、备份与生产配置不一致、备份未加密或未验证、单一备份目标且与主站同机房。注意事项:制定并记录RTO/RPO、定期演练、保留多份异地备份、限制备份权限并加密、监控备份成功率并自动告警。
来源:备份与容灾方案设计保障vps马来西亚服务器的高可用性