1.1 目标:明确要迁移的数据类型(文件存储、对象存储、关系型数据库、HDFS、Kafka 等),是否用于生产就绪、仅作备份、或混合部署;明确RPO/RTO指标。
1.2 输出:形成迁移计划文档,包含数据清单、大小、带宽需求、迁移窗口、回滚策略、测试用例与验收指标(校验和、行数、延迟等)。
2.1 法律合规:确认是否涉及个人资料或敏感数据,需遵循台湾本地法规与跨境传输政策,若需可申请客户同意或使用脱敏/匿名化处理。
2.2 账户与权限:在台湾云主机上创建账号、IAM 权限、KMS 密钥、VPC 子网、安全组规则,准备目标存储桶/卷并记录访问凭证。
3.1 带宽评估:按数据总量与迁移窗口计算所需带宽。示例:10TB 在 48 小时内迁移,所需吞吐 ≈ (10*1024 GB)/(48*3600s) ≈ 60 MB/s,留余量建议 80-100 MB/s。
3.2 建立传输通道:推荐先建立专线或 VPN(IPsec/SSL)或云厂商的直连服务以提高稳定性。步骤:在源端配置VPN网关->在台湾云创建对等连接->校验路由表->开放必要端口(rsync/ssh、数据库端口)。
3.3 测试:使用 iperf3 测试带宽:源端运行 iperf3 -s,目标端运行 iperf3 -c <源IP> -P 10 -t 60,调整并记录基线吞吐与丢包率。
4.1 磁盘/卷选择:按 IOPS 与吞吐选型,数据库使用高 IOPS SSD,归档备份可采用冷对象存储(低成本)。
4.2 分层与生命周期:将频繁访问数据放热存储、历史备份放冷存储,配置对象存储生命周期(如 30 天后归档)。
4.3 快照策略:在迁移前对源端数据库和文件系统做一次一致性快照(数据库建议使用物理备份或暂停写入的逻辑快照),记录快照ID与时间点。
5.1 小文件/大目录(rsync):在源端执行:rsync -avz --partial --progress --delete --bwlimit=80000 /data/ user@target:/data/;说明:--partial 保留中间文件,--bwlimit 单位 KB/s。
5.2 对象存储(rclone / s3 sync):使用 rclone 配置双方账号后:rclone sync source:bucket/path target:bucket/path --transfers=16 --checkers=32 --fast-list,完成后用 rclone check 校验。
5.3 校验与重传:在目标端对重要文件生成校验和并比对,例如:在源端 run md5sum 文件 > list.md5,传输后在目标端运行 md5sum -c list.md5,记录不一致文件并重传。
6.1 选择方式:小库可用逻辑导出(mysqldump/pg_dump);大库或在线迁移建议物理热备(xtrabackup、WAL 复制)或使用双写/中继复制。
6.2 MySQL 示例流程(在线零停机):
6.2.1 在源端开启 binlog 并记录当前位置:SHOW MASTER STATUS;
6.2.2 使用 Percona XtraBackup 做全备并传输:xtrabackup --backup --target-dir=/tmp/xb && xtrabackup --prepare --target-dir=/tmp/xb;
6.2.3 将备份数据 rsync 到台湾主机并根据 binlog 恢复增量,最后切换写入到目标数据库。
6.3 PostgreSQL 示例:
6.3.1 使用 pg_basebackup 做物理备份:pg_basebackup -h src -D /var/lib/postgresql/ -Ft -z -P
6.3.2 启动流复制或使用 logical replication 做表级同步,最终做一次短时停机做最后的 WAL replay 并切换。
7.1 HDFS:使用 hadoop distcp 实现集群间大数据复制,示例:hadoop distcp -Dfs.s3a.server-side-encryption-algorithm=SSE-S3 -m 20 hdfs://src-cluster/path hdfs://dst-cluster/path;分批次迁移,大文件并行度 m 取 10-50。
7.2 Kafka:使用 MirrorMaker2 或 Confluent Replicator 做 topic 级别复制。步骤:在目标集群部署 MirrorMaker2,配置 source bootstrap.servers 与 target,配置 offsets 和 replication.policy,先复制历史数据并开启增量同步,完成后切换消费者指向目标集群。
8.1 备份策略:迁移前保留源端至少两套备份(一套离线冷备、一套快照),并在目标端建立相同或更优的备份计划(快照->对象存储归档)。
8.2 验证与验收:执行完整性校验(校验和、行数比对、索引检查),性能测试(TP、查询响应),业务侧并行灰度验证,确认无误后逐步降低源端流量。
8.3 切换与回滚:
8.3.1 切换前降低 DNS TTL(建议 300s 或更低)提前至少 48 小时;
8.3.2 在低峰窗口做最终同步并记录切换时间点,更新 DNS 或负载均衡后监控 2-4 个小时;
8.3.3 如需回滚,按回滚 SOP 使用源端最新备份恢复并将 DNS/流量切回,记录原因并复盘。
答:采用先全量再增量的同步模型:先做一次一致性快照或全量备份并传输,随后使用增量复制(binlog/WAL/Kafka mirror)持续追赶差异;在切换窗口做最后一次短暂停机来回放未同步日志并验证一致性。配合流量切换前降低TTL、在灰度环境验证和监控,能将停机时间控制在几分钟到数十分钟。
答:建议使用云提供的 KMS 服务管理数据加密密钥(KMS),所有云端对象存储与卷启用服务端加密;备份文件本地端在传输前使用 GPG 或 OpenSSL 加密(示例:gpg --encrypt --recipient admin backup.tar.gz),并将密钥策略纳入 IAM,定期轮换密钥、记录密钥使用审计日志。私钥或主密钥应使用硬件安全模块(HSM)或云 KMS 的受管托管功能。
答:先基线测试定位瓶颈(CPU/IO/网络),针对性优化:提高云盘规格或使用本地 NVMe,增加节点或分片重分配,调整数据库参数(连接池、缓存、并发参数),对 HDFS 做副本与块大小调整,对 Kafka 做分区扩容与副本策略调整,同时检查网络延迟并升级链路或使用私有直连以降低抖动。