一、迁移场景
-
本地环境:自建MySQL 5.7(数据量500GB+),业务要求迁移停机时间<5分钟
-
目标架构:
二、迁移四步法
步骤1:环境准备(耗时30分钟)
1.1 创建Aurora MySQL
# AWS CLI创建Aurora集群
aws rds create-db-cluster \
--db-cluster-identifier my-aurora \
--engine aurora-mysql \
--engine-version 5.7 \
--master-username admin \
--master-user-password 'S3cure!2023' \
--db-subnet-group my-subnet-group
1.2 配置网络连通
-
推荐方案:Site-to-Site VPN
-
在AWS VPC控制台创建虚拟私有网关
-
配置客户网关(输入本地防火墙公网IP)
-
建立VPN连接并下载配置文件
-
步骤2:AWS DMS配置(核心环节)
2.1 创建复制实例
# Python Boto3脚本(自动化创建)
import boto3
dms = boto3.client('dms')
response = dms.create_replication_instance(
ReplicationInstanceIdentifier='dms-replication-1',
AllocatedStorage=100, # GB
ReplicationInstanceClass='dms.t3.large',
EngineVersion='3.4.7',
PubliclyAccessible=False,
VpcSecurityGroupIds=['sg-0xxxxxxx']
)
2.2 定义源/目标端点
配置项 | 源端点(本地MySQL) | 目标端点(Aurora) |
---|---|---|
ServerName | 192.168.1.100 | my-aurora.cluster-xxx.rds.amazonaws.com |
Port | 3306 | 3306 |
SSL | require | require |
Extra | initstmt=SET FOREIGN_KEY_CHECKS=0 | parallelLoadThreads=4 |
步骤3:启动迁移任务(关键代码)
# DMS任务配置模板(YAML格式)
TaskSettings:
TargetMetadata:
ParallelLoadThreads: 8
FullLoadSettings:
MaxFullLoadSubTasks: 16
ValidationSettings:
EnableValidation: true
Logging:
EnableLogging: true
任务类型选择:
pie
title 迁移模式选择
“全量+增量” : 75
“仅全量” : 15
“仅增量” : 10
步骤4:切换与验证
4.1 割接流程
-
停止应用写入
-
等待DMS延迟归零(CloudWatch查看
CDCLatencySource
) -
修改应用连接串指向Aurora终端节点
-
重启应用
4.2 数据一致性校验
-- 快速校验脚本
SELECT
(SELECT COUNT(*) FROM orders) AS src_count,
(SELECT COUNT(*) FROM aurora_db.orders) AS tgt_count,
MD5(GROUP_CONCAT(id, amount)) AS src_md5,
(SELECT MD5(...) FROM aurora_db.orders) AS tgt_md5;
三、避坑指南
陷阱1:大表迁移超时
-
症状:DMS卡在
Table state: LOADING
-
解决方案:
-
调整任务参数:
-
{
"LobMaxSize": 65536, // 增大LOB字段处理
"BatchApplyEnabled": true // 启用批量提交
}
2.对大表启用分片加载:
ALTER TABLE orders COMMENT='DMS_SPLIT';
陷阱2:时区乱码
-
预防措施:
# 创建RDS参数组
aws rds create-db-parameter-group \
--group-name my-utf8-group \
--description "UTF8 settings" \
--db-parameter-group-family aurora-mysql5.7
# 设置字符集
aws rds modify-db-parameter-group \
--group-name my-utf8-group \
--parameters "ParameterName=character_set_server,ParameterValue=utf8mb4"
四、成本优化
资源 | 配置 | 月成本(美元) | 节省建议 |
---|---|---|---|
DMS实例 | dms.t3.large | $108 | 迁移后立即删除 |
Aurora | db.r5.large | $348 | 启用预留实例-40% |
数据传输 | 500GB | $45 | 启用压缩节省50% |
总成本:迁移期约$500/月,稳定后$200/月
五、增强方案
-
灾备扩展:启用Aurora跨区复制
aws rds create-db-cluster \
--global-cluster-id my-global-db \
--source-db-cluster-identifier my-aurora
2.性能监控:CloudWatch仪表盘配置
迁移成果:某电商平台使用此方案:
-
迁移耗时:3天(含测试)
-
停机时间:72秒
-
性能提升:TPS从1200→3500
技术栈参考:AWS DMS文档 |