1.
迁移前的准备与清单
- 确认域名管理与登录信息(域名注册商、DNS服务商)
- 记录源服务器信息:IP、操作系统、控制面板、开放端口
- 列出所有站点与数据库及版本(如 Apache2.4 / Nginx 1.18 / PHP 7.4 / MariaDB 10.5)
- 制定RTO/RPO目标(例如:最大可接受停机5分钟,数据回滚点30秒内)
- 配置临时测试域名与备份保存位置(异地S3或对象存储)
- 准备验证脚本与健康检查(curl、dig、mysqlcheck)
2.
完整备份流程(文件与数据库)
- 备份网站文件:使用rsync增量备份,示例:rsync -azP /var/www/ user@203.0.113.20:/var/www/
- 数据库热备:使用mysqldump或xtrabackup,示例:mysqldump -u root -p --single-transaction mydb > mydb.sql
- 备份压缩与校验:tar czf site.tgz /var/www && sha256sum site.tgz > site.tgz.sha256
- 异地复制:将备份上传至台湾以外的对象存储以防区域性故障
- 保留多版本备份:每日/每小时快照策略以满足RPO要求
- 验证恢复:在临时环境恢复文件与数据库,运行自动化测试确保一致性
3.
目标服务器配置与环境同步
- 目标服务器规格示例(见下表)并安装相应软件栈
- 同步文件权限与SELinux/AppArmor策略,确保PHP-FPM/用户权限一致
- 配置虚拟主机、SSL证书(先用临时证书再切换到正式证书)
- 调整PHP、数据库参数(如innodb_buffer_pool_size根据内存调整)
- 部署防火墙与DDoS基础防御(iptables, fail2ban, limit_conn)
- 在目标上启用性能监控(Prometheus/Netdata)与日志集中(ELK/Graylog)
4.
数据迁移与增量同步策略
- 首次全量同步后启动增量同步:rsync --delete --inplace -azP
- 对数据库使用二进制日志或GTID,记录并应用增量以避免数据丢失
- 在切换前最后一次短停止窗口执行最后增量并锁表或使用单事务导出
- 文件同步示例命令:rsync -e "ssh -p 22" -az --delete /var/www/ user@203.0.113.20:/var/www/
- 验证同步一致性:比较文件数量、大小、校验和
- 对于大文件或大站点,考虑分批迁移与并行rsync降低窗口时间
5.
DNS切换与TTL控制实务
- 提前将域名TTL降低到60或300秒,建议24小时提前生效
- 切换DNS记录顺序:先添加新A记录(并保持老IP),再在观察无误后移除老IP
- 使用CDN/代理(如Cloudflare)时选择灰度切换或旁路测试模式
- 验证切换:dig +short A example.com @8.8.8.8 与 curl -I http://example.com 检查响应头
- 切换后监控访问日志、错误率与响应时间,准备回滚脚本
- 切换完成后将TTL恢复到正常值(例如3600或600)
6.
DDoS与CDN防护与切换注意事项
- 在迁移窗口启用CDN与WAF,Cloudflare或本地台湾CDN均可用以吸收流量
- 配置速率限制与HTTP层规则,阻挡可疑请求与爬虫
- 确认源站只能被CDN IP访问,避免直接暴露真实IP
- 准备应急黑洞与流量吸收策略,与托管商沟通BGP/Anycast能力
- 如果使用托管商DDoS清洗服务,提交切换工单并同步IP白名单
- 迁移后评估日志,若流量异常立即触发回滚或更严格的限制
7.
真实案例与配置示例(含表格)
- 案例:某台北电商在周末迁移,目标托管服务器为托管商A,计划停机窗口10分钟
- 源服务器:203.0.113.10,Ubuntu 18.04,2vCPU/4GB/80GB SSD,Nginx 1.14,MariaDB 10.3
- 目标服务器:203.0.113.20,Ubuntu 22.04,4vCPU/8GB/200GB SSD,Nginx 1.18,MariaDB 10.5
- 切换数据:将TTL提前24小时降为60秒,切换后监控30分钟无误再恢复TTL
- 回滚计划:保留源服务器30分钟在线,若失败立即将DNS回退到203.0.113.10
- 以下为示例服务器配置对照表:
| 项目 |
源服务器 |
目标服务器 |
| IP |
203.0.113.10 |
203.0.113.20 |
| OS |
Ubuntu 18.04 |
Ubuntu 22.04 |
| 规格 |
2 vCPU / 4GB / 80GB SSD |
4 vCPU / 8GB / 200GB SSD |
| 数据库 |
MariaDB 10.3 |
MariaDB 10.5 |
| Web Server |
Nginx 1.14 |
Nginx 1.18 |
来源:台湾托管服务器虚拟主机迁移实务从备份到DNS切换的完整流程