更新时间:2023-06-14 GMT+08:00
如何将单RDS数据整库迁移至DDM
操作场景
本章节主要介绍将单RDS(非拆分,以下简称旧RDS)库中的数据整库迁移到DDM实例非拆分库中,仅使用DDM做读写分离场景。
- 迁移过程中可能会出现业务中断情况,中断时长与迁移数据量大小、网络情况相关。
- 数据迁移是一项比较复杂的操作,建议在业务量较低时进行。本实践仅供参考,您需要根据自己业务场景、数据量、停机时间要求等情况,设计合适的迁移方案。
- 对于数据量较大的场景,建议通过工单或售后服务联系DDM技术支持人员进行支撑,在正式数据迁移前进行充分的迁移演练测试。
迁移前准备
- 准备可以访问旧RDS实例、目标DDM实例和目标DDM实例关联的RDS实例的ECS。
- 确保旧RDS实例、目标DDM实例和目标DDM实例关联的RDS实例都在同一个VPC下,保证网络互通。
- 旧RDS实例、目标DDM实例和目标DDM实例关联的RDS实例的安全组建议配置相同,如果不同则需要放开对应端口访问。
- ECS已安装MySQL官方客户端,MySQL客户端版本建议为5.6或5.7。
- Redhat系列Linux安装命令:yum install mysql mysql-devel
- Debian系列Linux安装命令:apt install mysql-client-5.7 mysql-client-core-5.7
- ECS磁盘空间足够存放临时转储文件;ECS内存空间足够,可以用来比较转储文件。
- 准备已关联RDS实例的DDM实例,并配置DDM帐号、DDM逻辑库等相关信息。
- 如果目标DDM实例逻辑库为拆分库,则需要在迁移前,在DDM控制台先创建与旧RDS数据表结构相同的逻辑表。
约束限制
- 为了保持数据完整性,需要先停止旧RDS业务后再进行数据迁移。
- 该场景不支持通过DDM关联旧RDS实例进行数据关联,需要将旧RDS实例数据导出后再导入到DDM实例完成数据迁移。
- 目标DDM关联的RDS版本与旧RDS的MySQL版本需要保持一致。
从旧RDS导出数据
- 登录ECS。
- 执行如下命令导出结构数据,其中斜体参数需根据实际情况配置,详细参数说明如表1所示。
mysqldump -h {DB_ADDRESS} -P {DB_PORT} -u {DB_USER} -p --skip-lock-tables --add-locks=false --set-gtid-purged=OFF --no-data {DB_NAME} > {mysql_schema.sql}
- 执行如下命令导出整库数据,其中斜体参数需根据实际情况配置,详细参数说明如表1所示。
mysqldump -h {DB_ADDRESS} -P {DB_PORT} -u {DB_USER} -p --hex-blob --complete-insert --skip-lock-tables --skip-tz-utc --skip-add-locks --set-gtid-purged=OFF --no-create-info {DB_NAME} > {mysql_data.sql}
- 导出完成后,在ECS上执行如下可查看2和3导出的.sql文件。
ls -l
将数据导入至DDM实例
- 在ECS上执行如下命令,将结构文件导入DDM。
mysql -f -h {DDM_ADDRESS} -P {DDM_PORT} -u {DDM_USER} -p {DB_NAME} < {mysql_schema.sql} Enter password: **********
- 执行如下命令,将数据文件导入DDM。
mysql -f -h {DDM_ADDRESS} -P {DDM_PORT} -u {DDM_USER} -p {DB_NAME} < {mysql_data.sql} Enter password: **********