Docker部署mysql5.7-CSDN博客 这个文章中有。
可以先对比一下参数信息,不一致的可以先去修改,docker搭建的DB修改 my.cnf 在[mysqld]直接加参数 = 新值,重启一下db
SHOW VARIABLES WHERE variable_name IN (
'log_bin_trust_function_creators',
'transaction_isolation',
'lower_case_table_names',
'sql_mode',
'character_set_server',
'default_character_set',
'innodb_large_prefix',
'max_connections',
'innodb_buffer_pool_size',
'group_concat_max_len'
);


子网组需要提前去创建,VPC 要和RDS在同一网段,子网组要覆盖不同可用区的子网。
其次目标端点和源端点必须保持网络是通的,网段不同的话需要加对等连接去配置
VPC 对等连接是两个 VPC 之间的网络连接,您可通过此连接,可以使用私有 IPv4 地址或 IPv6 地址在两个 VPC 之间路由流量。这两个 VPC 中的实例可以彼此通信,就像它们在同一网络中一样。您可以在自己的 VPC 之间、自己的 VPC 与另一个 AWS 账户中的 VPC 或与其他 AWS 区域中的 VPC 之间创建 VPC 对等连接。




要将私有 IPv4 流量从实例发送到对等 VPC 中的实例,必须向与实例所在子网关联的路由表添加路由。此路由指向 VPC 对等连接中对等 VPC 的 CIDR 块(或 CIDR 块的一部分),并指定 VPC 对等连接作为目标。
两边的VPC的子网的相关路由都要加上。


两边路由都加上后,对等连接中也会显示对应路由

配置结束可以ping测


源端点直接选择默认,测试连接在选择同一VPC(复制实例没开公网的话),成功就可以创建端点。
创建目标端点,自己选择引擎类型,服务器名称写公网DNS或者内网DNS(复制实例和服务器在同一子网的话),端口、数据库账户、密码,同理去测试连接一下,成功就可以开始做DMS了。


分别测试连接 ,没问题就可以继续下一步

选择刚刚创建的那些内容,迁移类型,第一个是全量,第二是全量加持续增量,第三个是变化的数据
第一个是直接选择就可以

这里补充一点:不执行任何操作的就是对目标端不做操作,对现有数据不做更改,有个弊端就是目标端id=2的age数据为18,源端id=2的数据为17,使用之后还是为17;
第二个删除目标表就等重新同步源端数据
第三个就是把目标端数据删除,结构保留


都差不多,一个自启动,一个手动启动。要看日志就把日志选上。
迁移类型2、3都需要修改RDS的参数binlog_checksum NONE、binlog_format ROW 重启RDS才能生效,其他DMS配置跟上面一样。
迁移完成,进行数据校验,查看库的大小。
SELECT table_schema AS `Database`,
SUM(data_length + index_length) / 1024 / 1024 / 1024 AS `Size (G)`
FROM information_schema.tables
WHERE table_schema = '------'
GROUP BY table_schema;
也可以尝试先去把表库结构创建起来,直接弄数据进去。
------------------------------------------------------------------
--------------------------------------------

先去下载mysqldump、然后dump到服务器,
mysqldump -h ip/dns -u admin -p --no-create-info --skip-triggers --databases db_name > /data/1.sql
-h ip/dns:指定MySQL服务器的IP地址或域名。-u admin:使用管理员账户进行连接,admin 是示例用户名,你应该使用实际的管理员用户名。-p:提示输入密码进行连接。--no-create-info:导出时不包含表结构的创建语句。--skip-triggers:导出时不包含触发器。--databases db_name:指定要导出的数据库名,db_name 是示例数据库名,你应该使用实际的数据库名。> /data/1.sql:将导出的数据保存到 /data/1.sql 文件中,/data/1.sql 是示例文件路径,你可以根据需要修改保存路径和文件名。用于导出MySQL数据库的数据,将指定数据库的数据导出到一个SQL文件中
mysqldump -h ip/dns -u admin -p --databases db_name > /data/1.sql
用于导出指定数据库的数据到一个 SQL 文件中。下面是对命令的解释:
-h ip/dns:指定 MySQL 服务器的 IP 地址或域名。-u admin:使用管理员账户进行连接,admin 是示例用户名,你应该使用实际的管理员用户名。-p:提示输入密码进行连接。--databases db_name:指定要导出的数据库名,db_name 是例数据库名,你应该使用实际的数据库名。> /data/1.sql:将导出的数据保存到 /data/1.sql 文件中。请注意,在实际使用时,确保替换命令中的占位符(如 MySQL 服务器的 IP 地址或域名、用户名、密码和数据库名)以匹配你的实际数据库设置。这样可以确保成功导出指定数据库的数据到指定的 SQL 文件中。

下面恢复到自建DB
mysql -h ip/dns -u root -p test < /data/1.sql
-h 172.31.30.145:指定 MySQL 服务器的 IP 地址。-u root:使用 root 用户进行连接,你可以替换为实际的用户名。-p:提示输入密码进行连接。test:指定要导入数据的目标数据库,你可以替换为实际的数据库名。< /data/1.sql:从 /data/1.sql 文件中读取 SQL 语句并执行。请确保你有足够的权限,并且替换命令中的占位符(如 IP 地址、用户名、密码和文件路径)以适应你的实际环境。此外,在导入数据之前,你需要确保数据库已经存在,并且你有足够的权限在目标数据库中创建表和插入数据。

进去容器登录进去mysql 然后去执行source 1.sql
1.sql 要去容器 执行 find / -name 1.sql 去找你对应的容器的文件的位置,登录mysql手动执行也可以。