1. 迁移前的准备与评估
- 资产清单:列出所有服务器、应用、数据库、IP、端口、依赖服务(Redis、MQ、外部API)。
- 带宽与延迟评估:在源站与越南目标机之间做 ping/traceroute,测量带宽(iperf3)。如果带宽低于预计的生产复制需求,计划增购链路或使用离线迁移。
- 合规与备案:确认越南本地数据主权、备案、合同 SLA、IDC 位置(河内/胡志明/边境)等要求。
2. 目标环境搭建(越南云/机房)
- 镜像与规格:在越南目标创建同样或更优的镜像(操作系统、内核、Docker/容器运行时)。
- 网络与安全:配置 VPC、子网、内网安全组,开启必要端口(SSH、HTTP、应用端口),并设置防火墙规则与负载均衡器。
- DNS 策略:提前准备好低 TTL(如60秒)用于切换时快速生效。
3. 数据库迁移:冷备/热备的步骤
- MySQL 非强一致(推荐):使用 mysqldump 或 xtrabackup。示例 mysqldump:mysqldump -u root -p --single-transaction --routines --events --databases db1 db2 > dump.sql;传输到目标并导入 mysql -u root -p < dump.sql。
- MySQL 实时复制:在目标配置为从库,设置复制用户并 obtain master status;在源执行 SHOW MASTER STATUS,配置 CHANGE MASTER TO MASTER_HOST='源IP', MASTER_USER='repl', MASTER_PASSWORD='pwd', MASTER_LOG_FILE='file', MASTER_LOG_POS=pos;START SLAVE;待延迟为0后切换。
- PostgreSQL:用 pg_basebackup 或 logical replication(pg_dump/pg_restore)。示例:pg_dump -Fc -h src -U user db | pg_restore -d db -h dest -U user。
4. 文件与静态资源迁移(rsync/对象存储)
- rsync 增量迁移命令(首次全量,然后增量):rsync -azP --delete --exclude='cache/' /var/www/ user@target:/var/www/。首次在低流量时跑完并校验 md5sum。
- 使用对象存储(S3 兼容):建议把静态资源推到越南就近的对象存储,配置 CDN 节点并更新应用的存储配置。
5. 应用与服务切换步骤(蓝绿/滚动)
- 蓝绿准备:在目标部署绿环境,执行集成与回归测试;准备回滚脚本。
- 切换流程示例:1) 将目标数据库设为从并同步到0延迟;2) 将目标应用切换到读写(必要时短停);3) 更新 DNS 的 A/负载均衡器,将流量切至目标;4) 监控错误率与延迟,并准备回退。
- 切换后验证:用户路径化验、业务关键事务(下单、支付、登录)逐项验证。
6. 备份与容灾最佳实践
- 备份分层:快照(小时/日)、数据库逻辑备份(每日)、异地冷备(每周/离线带宽送达)。
- 自动化与保留策略:使用 cron + 脚本或云备份服务,示例 cron 每天2点执行数据库 dump 并上传到对象存储;保留策略:7天小时级快照、30天日备、12个月月备。
- 灾备演练:定期(建议每季度)演练恢复流程,验证 RTO/RPO 是否满足 SLA;记录演练日志与问题清单。
7. 监控、告警与回滚机制
- 监控项:CPU、内存、磁盘、网络、连接数、数据库慢查询、业务错误率。配置 Prometheus + Grafana 或云监控。
- 告警与自动化:阈值告警接入钉钉/邮件/短信;重要告警可触发自动扩容/重启脚本。
- 回滚计划:切换前准备好回退步骤(DNS TTL、数据库回滚点、应用代码回退命令),并在切换窗口内保留旧环境至少24小时。
8. 常用命令与示例脚本参考
- rsync 增量:rsync -azP --delete --exclude='logs/*' /data/ user@vn:/data/。
- mysqldump 自动化脚本(示例):mysqldump -u${USER} -p${PW} --single-transaction --databases ${DB} | gzip > /backups/${DB}_$(date +%F).sql.gz;并上传对象存储。
- 快照与恢复:使用云厂商 API 安排每日快照与按需恢复脚本。
9. 问:在越南迁移时网络带宽不足怎么办?
答:如果带宽不足,可先做离线迁移(物理拷贝或高速快递硬盘),或使用“种子机”在越南本地做首次全量导入,然后再做增量 rsync;同时与当地IDC协调临时加大带宽,或采用差分压缩(rsync + --compress)并在非高峰时段迁移。
10. 问:如何保证数据库在切换时数据不丢失?
答:推荐使用主从复制并等待延迟为0后切换写入端;若使用 mysqldump,执行 --single-transaction 并在短时间内冻结写入或把应用短切换到只读模式;切换后通过校验表行数、事务 ID、应用端日志确保一致性。
11. 问:灾备演练频率与指标如何设定?
答:建议季度演练一次,每次跑完整恢复流程并校验 RTO(恢复时间目标)和 RPO(数据丢失窗口);目标 RTO 应小于 SLA 要求(如4小时),RPO 小于可接受数据丢失(如1小时);演练后记录问题并修订运行手册。
来源:越南的云服务器迁移路线图与备份容灾最佳实践