1. 概述与迁移前准备
- 明确目标:确认要将哪些网站、数据库、邮件与子域迁移到台湾服务器;列出域名、子域、FTP/SFTP、数据库账号、管理面板与当前DNS提供商。
- 时间窗口:选择流量低峰期,预估所需维护时间并通知相关人员与用户。
- 权限与凭证:确保能登录旧主机与新主机的root/管理员权限,DNS托管控制台权限、SSL证书访问权限。
2. 评估与准备新台湾托管环境
- 规格选择:根据CPU、内存、带宽、流量与存储需求选择VPS或裸机,并确定操作系统版本(例如 Ubuntu 20.04 / CentOS 7/8)。
- 软件栈确认:决定LAMP或LEMP、PHP版本、MySQL/MariaDB版本并确认与舊站兼容。
- 网络与防火墙:配置基本防火墙(ufw/iptables),开启SSH并限制来源IP,准备好开放HTTP/HTTPS端口。
3. 完整备份(文件与数据库)
- 网站文件:使用tar或rsync将网站根目录打包:tar -czf /root/site_backup_$(date +%F).tar.gz /var/www/site。或用rsync -avz /var/www/site user@newserver:/var/www/site。
- 数据库:使用mysqldump导出:mysqldump -u root -p --databases dbname > /root/dbname.sql;若数据量大可启用压缩:mysqldump ... | gzip > dbname.sql.gz。
- 邮件与配置:导出邮件数据(若使用本机邮件服务),备份crontab、nginx/apache配置、php.ini、SSL密钥文件。
4. 在台湾服务器上搭建与配置环境
- 安装必要软件:示例(Ubuntu)sudo apt update && sudo apt install nginx php-fpm mariadb-server certbot -y。
- 用户与目录权限:创建部署用户、设置网站目录属主与权限(chown -R www-data:www-data /var/www/site)。
- 数据库配置:创建数据库与用户并导入SQL,调整max_allowed_packet、innodb_buffer_pool_size等参数以适应负载。
5. 数据还原与配置微调
- 还原文件:若用rsync已同步则检查完整性;若用tar则解包并调整文件权限。
- 导入数据库:mysql -u root -p < dbname.sql 或 zcat dbname.sql.gz | mysql -u root -p dbname。
- 修改配置:更新网站的数据库连接信息、缓存路径、第三方API回调地址等,完成后重启服务(systemctl restart nginx php7.x-fpm mysql)。
6. 本地hosts测试与功能验证
- 本地hosts:在本地机器hosts文件添加 new_IP 域名映射(Windows c:\Windows\System32\drivers\etc\hosts,Linux /etc/hosts)。
- 功能检查:在本地访问并测试登录、表单提交、支付回调、文件上传、图片显示等,开启调试日志查看错误。
- 性能与日志:观察访问日志与错误日志,确认无明显错误后准备同步最后差异。
7. SSL 证书迁移或申请
- 迁移现有证书:如果原主机有私钥与证书可以直接复制到新服务器并配置 nginx/apache。注意私钥权限(600)。
- 重新申请:若使用Let's Encrypt,建议在确认域名可解析至新IP(或使用DNS验证)后运行certbot --nginx -d example.com。
- 多域/Wildcard:若使用泛域名证书,优先用DNS-01验证避免IP切换阻碍。
8. DNS 无缝切换实务(详细步骤)
- 预先降低TTL:在切换前48小时将A记录TTL降到60-120秒以便快速生效。
- 维护并保留旧IP:切换当天保持旧主机运行并同步写入一段时间以避免数据丢失。
- 准备记录:记录所有A/AAAA、CNAME、MX、TXT、SRV记录以及DMARC/SPF/DKIM设置,确保在DNS控制台逐项复制无遗漏。
9. 同步差异与数据库一致性策略
- 最后一次增量同步:使用rsync --delete -avz --progress 从旧主机向新主机同步最新文件。
- 数据库增量:如果支持,启用主从复制临时复制到新库,或在切换前短暂停写(maintenance mode)并进行最后一次mysqldump导出导入。
- 自动化:可使用 lsyncd / unison / glusterfs 或基于binlog的复制减少停机时间。
10. 切换当天详细执行顺序
- T-minus 60 分钟:确认所有人员到位、脚本准备、监控启动。
- 最后同步:暂停旧站写入(进入维护模式)、执行最后rsync与数据库导出并导入。
- 修改DNS A记录:在DNS提供商控制台将域名指向台湾服务器IP,等待TTL时间生效并监控访问。
- 验证:使用dig/nslookup确认解析,检查网站功能并逐项确认邮件、API回调正常。
11. 切换后监控与回退计划
- 监控指标:观察访问响应时间、错误率、数据库慢查询、磁盘IO与带宽。
- 回退条件:若发现核心业务故障且短时间内无法修复,则将DNS切回旧IP(注意TTL),并同步修复记录问题与再迁移。
- 清理与优化:确认稳定后把TTL恢复到原值、调整备份策略与文档化迁移细节。
12. 常见问题排查清单
- 解析延时:确认TTL、DNS提供商缓存与客户端DNS缓存,建议用公共DNS(8.8.8.8)测试。
- SSL错误:检查证书链、私钥权限与server_name配置。
- 数据不一致:确认是否漏同步附件/上传目录或未停止写入,必要时回滚并重复增量同步。
13. Q&A — 问:迁移是否一定要降TTL?
- 答:强烈建议在切换前48小时把TTL降到60-300秒,虽然不是绝对必须,但降低TTL可以显著缩短DNS切换传播时间,减少回退等待。
14. Q&A — 问:如何在切换时确保邮件不丢失?
- 答:保留旧主机的邮件服务运行若干小时并配置MX记录同步,或使用第三方托管邮件(Gmail/Office365)以避免因DNS切换造成延迟;迁移前导出邮箱并确认新的邮件服务能接收旧邮件。
15. Q&A — 问:如果需要最小化停机时间,推荐的最佳实践是什么?
- 答:采用数据库主从即时复制或先启用写入到两个库的双写策略、用rsync持续同步文件并在切换前短暂停写进行最后同步;把TTL提前调低并在新服务器上完成全面测试后切换。
来源:台湾服务器托管虚拟主机 迁移流程和DNS无缝切换实务