1.
准备阶段:梳理现有环境与备份策略
- 清单:记录操作系统版本、内核、已安装软件及版本、服务端口、计划任务、证书与域名;使用命令:uname -a、lsb_release -a、crontab -l、ss -tuln。
- 统计数据量:du -sh /var/www /var/lib/mysql,估算带宽与磁盘需求。
- 完整备份:做文件备份与数据库导出(见后文数据库部分),并把备份放到安全存储(本地、外部 NAS 或对象存储)。
2.
选择美国弹性云服务器规格与网络配置
- 区域与可用区:选择合适的美国区域(如 us-east-1),靠近目标用户或 CDN 节点。
- 实例类型与磁盘:根据 CPU/内存/IO 需求选择实例,磁盘选择 SSD 并预留 IOPS,启用独立数据盘。
- 密钥与安全组:创建 SSH KeyPair,配置安全组仅开放必要端口(22/80/443/应用端口),启用云防火墙与网络 ACL。
3.
实例初始化与安全加固
- 初始化:通过控制台或 API 启动实例,绑定弹性公网 IP(EIP),并使用私钥连接:ssh -i key.pem user@EIP。
- 安全策略:禁用密码登录,编辑 /etc/ssh/sshd_config(PermitRootLogin no, PasswordAuthentication no),重启 sshd。
- 基础工具:安装常用工具(vim, git, curl, rsync, unzip),配置时区与 NTP。
4.
数据迁移方法(文件与静态资源)
- 小量数据:scp 或 sftp 直传,例如 scp -i key.pem -r /var/www user@EIP:/var/www。
- 大量数据或增量迁移:推荐 rsync:rsync -azP -e "ssh -i key.pem" /var/www/ user@EIP:/var/www/,支持断点续传与增量同步。
- 其它方式:使用对象存储(S3/OSS)做临时中转或使用云提供的离线迁移服务(大数据量时)。
5.
数据库迁移(MySQL/Postgres 实操)
- 逻辑导出:MySQL 使用 mysqldump --single-transaction --quick --routines --events -u root -p dbname > dump.sql;Postgres 使用 pg_dump。
- 传输与导入:将 dump.sql 传到云端并导入:mysql -u root -p dbname < dump.sql;若大表可先压缩传输:gzip dump.sql && scp dump.sql.gz ... && gunzip。
- 最小停机方案:先做一次全量导出与导入,再在切换前做增量 binlog/逻辑复制或使用主从复制,确认延迟为零后切换只读到新主。
6.
应用与依赖部署
- 软件安装:按清单安装相同版本的运行时(PHP/Python/Node/Java)、扩展与库。
- 配置迁移:把 .env、config 文件调整为新数据库、缓存与对象存储地址,注意不要泄露密钥。
- 依赖管理:运行 pip install -r requirements.txt、npm ci 或 composer install,并用 virtualenv 或容器隔离环境。
7.
SSL、域名与DNS切换策略
- 预配置证书:在新服务器上提前申请或安装 SSL(Let's Encrypt 或 CA 证书),验证 HTTPS 正常。
- TTL 降低:切换前 24 小时把 DNS 记录的 TTL 调低到 300s,便于快速切换。
- 切换流程:完成测试后更新 A/AAAA 记录到新 EIP,监控 1-2 个 TTL 周期,确认访问与日志正常。
8.
测试、监控与回滚方案
- 验收测试:访问核心页面、执行写入、触发定时任务、检查第三方回调。
- 监控告警:启用云监控(CPU、内存、磁盘、端口健康)、应用日志与错误率报警。
- 回滚:在 DNS 切换前保留原主机并同步最后一次增量,若异常把 DNS 回退到原 IP 并再次同步。
9.
性能调优与存储策略
- 文件权限与性能:调整 nginx/apache 用户权限,开启 opcache、缓存与 gzip,配置适当的 keepalive 与 worker。
- 快照与备份:配置自动磁盘快照、数据库备份到对象存储,测试恢复流程并定期演练。
10.
常见问题与排错要点
- SSH 连接失败:检查安全组、私钥权限(chmod 600)与实例公钥是否写入。
- 权限与 SELinux:若访问错误检查文件权限、SELinux 状态(getenforce),暂时调为 Permissive 排查。
11.
迁移后运维与优化建议
- 自动化:使用脚本或 Ansible/Chef/Terraform 管理实例配置与部署,确保可重复性。
- 成本控制:监控带宽与磁盘使用,考虑按需调整实例规格与自动伸缩策略。
12.
问:如何把停机时间降到最低?
- 答:先做一次全量同步再开启主从复制或逻辑复制,切换 DNS 时仅需最后一次短时间的 write freeze;降低 DNS TTL、提前准备好 EIP 与证书可以缩短切换窗口。
13.
问:迁移后如何保证安全性?
- 答:使用 SSH key、关闭密码登录、配置安全组与最小开放端口、启用云 WAF 与入侵检测,安装 fail2ban 并定期更新系统补丁与依赖。
14.
问:数据库非常大,带宽有限怎么办?
- 答:可采用离线迁移(云提供商的离线导入服务或把硬盘寄送给厂商),或者先压缩并分块传输、使用物理备份(XtraBackup)并在云端做恢复,或在云端启动临时高速通道并使用增量复制减少最终切换数据量。
来源:迁移实操美国弹性云服务器从传统主机到云上的步骤详解