1.
迁移前的准备与风险评估
检查项:确认源、目标服务器的操作系统、Web(Nginx/Apache)、PHP与MySQL版本;备份策略与回滚方案;是否有大量小文件或inode限制。
动作:将域名TTL提前设置为300秒(至少24小时)以便切换时能快速生效;记录当前IP、端口、防火墙、SSL证书路径与cron任务;通知业务方并约定维护窗口。
2.
环境与权限准备
目标机配置:在目标台湾服务器上安装相同版本或兼容的软件包(php-fpm、mysql/mariadb、nginx/apache、redis等)。
账号权限:确保能用SSH密钥连接,创建与源服务器相同的系统用户与组(如www-data或apache),并预先配置防火墙允许SSH/HTTP/HTTPS端口以及数据库访问(如仅在本地或内部网络访问)。
3.
文件迁移的具体步骤(首轮全量)
方法推荐:使用rsync做增量同步,若小文件太多可先打包成tar传输。示例命令:rsync -azP --delete -e "ssh -p 22" /var/www/site/ user@目标IP:/var/www/site/。
注意:保留权限与符号链接(rsync的-a选项),排除缓存目录(--exclude 'cache/*')与上传目录(如/tmp/uploads正在写入时)。
4.
数据库迁移(MySQL/MariaDB)
全量导出:在业务停止或低峰时执行:mysqldump -u root -p --single-transaction --quick --routines --events dbname > dbname.sql。
导入:在目标机上创建同名数据库与用户,然后 mysql -u root -p dbname < dbname.sql。若数据量大,建议先导出为压缩文件传输:gzip -c dbname.sql | ssh user@目标IP "gunzip | mysql -u root -p dbname"。
5.
增量同步与切换前准备
增量同步:第一次全量之后在切换前再做一轮rsync增量同步,保证文件差异最小。示例:rsync -azP --delete -e "ssh -p 22" /var/www/site/ user@目标IP:/var/www/site/。
数据库增量:如果不能停服,可使用binlog增量或使用pt-table-sync/Percona工具,或在切换窗口短暂停写以导出最新备份。
6.
SSL/证书与配置迁移
证书迁移:复制/etc/letsencrypt或其他证书目录到目标服务器(保留权限)。若使用Let's Encrypt,建议到目标机重新跑certbot certonly --standalone或使用DNS挑战以避免端口问题。
配置检查:检查nginx/apache配置的域名、root、fastcgi_pass、日志路径与rewrite规则,一致化PHP配置(php.ini)与上传限制。
7.
DNS切换与预验证
预验证:在DNS切换前,使用目标服务器IP和hosts文件(本地机器上/etc/hosts)将域名指向新IP,完整测试网站功能、登录、上传、支付回调等。
切换:在维护窗口将域名A记录指向目标IP,监控TTL生效;保留源服务器一段时间(至少TTL两倍)做回滚。
8.
切换后的检查清单
功能测试:访问首页、登录、动态页面、文件上传、图片加载、API接口、邮件发送、第三方回调等;查看错误日志(/var/log/nginx、php-fpm日志、应用日志)。
性能与网络:使用curl -I、ping、mtr、traceroute确认访问路径是否走CN2,关注丢包与延迟;确认缓存命中率与CDN配置(若使用CDN,需在CDN中更新回源IP)。
9.
常见故障与排查方法(一)
问题:页面报500或500系列错误。
排查:查看nginx/apache与php-fpm错误日志定位具体错误(语法问题、PHP扩展缺失、权限问题)。若是权限问题,运行chown -R www-data:www-data /var/www/site && find /var/www/site -type d -exec chmod 755 {} \; && find /var/www/site -type f -exec chmod 644 {} \;。
10.
常见故障与排查方法(二)
问题:数据库连接失败或乱码。
排查:检查数据库用户/密码、bind-address、端口、防火墙;确认数据库编码与应用配置一致(如utf8mb4),若是连接配置中使用socket,改为使用127.0.0.1或正确socket路径。
11.
常见故障与排查方法(三)
问题:DNS切换后访问仍旧到老服务器或出现502/504。
排查:先用nslookup/dig确认DNS解析是否生效(多个节点可能缓存旧记录);用curl -v看请求实际到达的IP;502/504多为后端fastcgi或应用超时,检查php-fpm进程数、后端连接池与防火墙是否阻断后端端口。
12.
回滚与后续优化
回滚:如果迁移出现严重问题且无法短时间修复,将DNS回切到旧IP并再次同步数据。执行回滚前通知用户并记录操作时间。
优化建议:将TTL常态设置为较低值以便快速切换;使用负载均衡或漂移IP减少停机;在迁移前做一次灰度/蓝绿切换以降低风险。
13.
问:迁移过程中如何最小化停机时间?
答:通过提前设置低TTL、首次全量在业务低峰做,切换窗口执行短时停止写入并做最后一次增量rsync与数据库dump/import;尽量使用binlog增量或pt工具减少完全停服时间;提前在hosts上测试以避免DNS等待。
14.
问:双向CN2对迁移有什么特殊注意?
答:双向CN2表示进出中国大陆路由较优,迁移时需确认目标运营商链路策略是否允许外部SSH大流量并检测丢包/延迟;若发现连接不稳定,可选择通过中转机(同运营商的跳板)或使用VPN/专线临时传输,完成后恢复直接访问。
15.
问:迁移后发现邮件无法发送或第三方回调失败怎么办?
答:检查SMTP配置、防火墙对25/587/465端口的限制,目标服务器IP是否被对方列入黑名单;对于第三方回调,确认回调URL解析到新IP并在目标服务器上允许外网访问特定端口;查看应用日志与外部方提供的回调日志以定位原因。
来源:台湾服务器双向cn2 虚拟主机迁移步骤与常见故障排查