一、自建DB
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'
);
二、配置DMS
1.创建复制实例
子网组需要提前去创建,VPC 要和RDS在同一网段,子网组要覆盖不同可用区的子网。
2.创建端点
源端点直接选择默认,测试连接在选择同一VPC(复制实例没开公网的话),成功狗就可以创建端点。
创建目标端点,自己选择引擎类型,服务器名称写公网DNS或者内网DNS(复制实例和服务器在同一子网的话),端口、数据库账户、密码,同理去测试连接一下,成功就可以开始做DMS了。
3.创建DMS任务
选择刚刚创建的那些内容,迁移类型,第一个是全量,第二是全量加持续增量,第三个是变化的数据
第一个是直接选择就可以
都差不多,一个自启动,一个手动启动。要看日志就把日志选上。
迁移类型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;
可能遇到报错,具体可以分析一下,可能是RDS某个视图或者是数据库出了问题,可以修改视图什么的。
也可以尝试先去把表库结构创建起来,直接弄数据进去。
------------------------------------------------------------------
方法二:数据小的话可以直接使用可视化工具等等直接导出数据库结构与数据,然后在新库执行。
--------------------------------------------
方法三:mysqldump 工具 (数据量大的话,最好使用内网)
先去下载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 地址、用户名、密码和文件路径)以适应你的实际环境。此外,在导入数据之前,你需要确保数据库已经存在,并且你有足够的权限在目标数据库中创建表和插入数据。
方法四:docker 数据库容器里面直接运行sql文件
进去容器登录进去mysql 然后去执行source 1.sql
1.sql 要去容器 执行 find / -name 1.sql 去找你对应的容器的文件的位置,登录mysql手动执行也可以。