1.1 检查账号与权限:确认源与目标服务器均有root或具备sudo权限的用户;获取SSH密钥或确保密码登录可用。
1.2 列出服务与端口:记录站群中每个站点运行的软件(Nginx/Apache、MySQL/MariaDB、Redis等)及版本;确认防火墙、端口开放情况。
1.3 资源评估:统计磁盘使用、数据库大小、文件数量,估算迁移时间与带宽需求。
2.1 选择备份类型:对静态文件使用文件级备份(rsync/tar),对数据库使用逻辑备份(mysqldump)或物理备份(xtrabackup)。
2.2 确定窗口与影响:在试用期限时内安排迁移窗口,尽量在低峰期进行并通知关联团队。
2.3 决定恢复点:设定是否做全量+增量备份,记录每次备份的时间戳与标识。
3.1 文件备份(全量):在源服务器运行:tar -czf /backup/site_all_YYYYMMDD.tar.gz /var/www/site1 /var/www/site2;或使用rsync做镜像:rsync -avz --delete /var/www/ user@target:/backup/site/。
3.2 配置备份:备份/etc/nginx /etc/php /etc/mysql 等配置文件:tar -czf /backup/configs_YYYYMMDD.tar.gz /etc/nginx /etc/php /etc/mysql。
3.3 上传到安全存储:将备份推送到目标服务器或第三方对象存储(S3/OSS),验证传输完成。
4.1 逻辑备份:mysqldump -u root -p --single-transaction --routines --events --databases db1 db2 > /backup/db_all.sql。
4.2 压缩并传输:gzip /backup/db_all.sql && scp /backup/db_all.sql.gz user@target:/backup/。
4.3 导入验证:在目标服务器解压后用mysql -u root -p < db_all.sql 导入;检查导入日志、表数量与行数是否一致。
5.1 选择时点备份:对活跃数据库使用binlog或xtrabackup从特定GTID/binlog位置恢复,确保无丢失。
5.2 暂停写入:如可接受短暂停机,先把站点设为只读或暂停写操作,完成最后同步再切换流量。
5.3 增量同步:首轮用rsync全量同步,之后用rsync --link-dest或增量方式减少差异量;数据库可用binlog增量复制。
6.1 文件校验:在源与目标分别执行find /var/www -type f -exec md5sum {} \; > /tmp/src.md5 和 /tmp/dst.md5,然后diff两文件。
6.2 数据库校验:比较表数量与各表行数(SELECT COUNT(*)),或导出表校验和(pt-table-checksum)。
6.3 恢复演练:在隔离环境或临时域名上还原一次,访问页面、运行常用脚本、检查日志,确认功能与性能。
7.1 脚本化流程:将rsync、mysqldump、压缩、传输、校验写入脚本(bash),并添加日志记录与错误返回码检查。
7.2 定时任务:使用crontab安排频率,备份脚本中加入保留策略(保留最近N份)。
7.3 通知与告警:成功与失败通过邮件或钉钉/Slack webhook通知管理员。
8.1 回滚流程:保留一份可立即恢复的完整备份,记录DNS与负载均衡切换步骤,并在回滚前再做一次差异同步。
8.2 清理策略:试用期结束若需删除数据,先导出索引与清单,确认合规后批量删除并覆盖敏感数据。
8.3 合同与数据保全:记录迁移时间线、备份位置与负责人,便于后续审计。
问题:迁移后站点返回403或500错误,如何快速定位?
回答:先看Nginx/Apache错误日志(/var/log/nginx/error.log),检查文件权限与属主(chown -R www:www /var/www);确认配置文件中root路径与fastcgi/socket设置正确;检查PHP-FPM是否运行并查看其日志。
问题:如何在试用期内快速验证备份真正可用?
回答:每次关键备份后立即在隔离环境恢复一次,包括文件与数据库;执行功能测试用例(登录、写入、检索);比对行数与md5校验,记录恢复时间与问题。
问题:希望最小化停机时间,推荐什么流程?
回答:使用先全量异步同步(rsync),再在切换窗口短暂停写并做最后一次增量同步;数据库用主从复制或binlog增量同步,切换时只需改写DNS或负载均衡权重即可。