托管RDS MYSQL 数据同步至服务器自建DB

一、自建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手动执行也可以。

  • 20
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值