AWS RDS-MySql数据手动迁移(涉及,视图触发器,存储过程,函数等数据)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS RDS-MySql数据手动迁移(涉及,视图触发器,存储过程,函数等数据)相关的知识,希望对你有一定的参考价值。

用户需求

  • 数据迁移
  • DMS无法迁移视图,触发器等情况下使用手动迁移

1.创建临时EC2

  • 在目标数据库Region创建临时EC2用于导出数据

2.安装mysqldump

  • yum -y install mysql

3.导出数据

  • mysqldump导出语句参考
mysqldump -h rds地址     -u 用户名     -p 密码     --single-transaction     --routines     --triggers     --databases  导出数据库名称     --set-gtid-purged=OFF     --add-drop-database     --compress      --port 3306 > a.sql
参数 说明
--single-transaction 从服务器转储数据之前发出BEGIN SQL语句,保持数据一致性
--routines 导出存储过程和函数
--triggers 导出表的触发器
--set-gtid-purged 是否将SET @@ GLOBAL.GTID_PURGED添加到输出
--add-drop-database 在每个CREATE DATABASE语句之前添加DROP DATABASE语句
--compress 压缩客户端和服务器之间发送的所有信息

4.导入数据

  • RDS导入前提
    • 目标数据库用户名必须与源数据库用户名保持一致
    • 解决方法
      • 使用sed命令将sql文件中的源数据库用户名替换成目标数据库的用户名
mysql -h 数据库地址 -u 用户名 -p 密码 < a.sql

5.导入错误处理

  • 描述

当数据库已启用二进制日志并且 mysqldump 文件包含对象(触发器、视图、函数或事件)时,会出现此错误。有关更多信息,请参阅 MySQL 文档中的二进制日志

  • 错误信息
Error: 1227 SQLSTATE: 42000 (ER_SPECIFIC_ACCESS_DENIED_ERROR) Access denied; you need (at least one of) the %s privilege(s) for this operation
  • 解决方法

要解决错误 1227,请将 log_bin_trust_function_creators 的参数组值更改为 1

参考文档:

以上是关于AWS RDS-MySql数据手动迁移(涉及,视图触发器,存储过程,函数等数据)的主要内容,如果未能解决你的问题,请参考以下文章

AWS 迁移MSSQL 数据库到 Aurora

Laravel 使用 Lambda 迁移到 AWS RDS

将 Kubernetes 应用程序从 AWS 迁移到 GCP

从 Heroku 迁移到 AWS 时的清单

阿里云RDS-Mysql物理备份数据库文件,在本地windows下数据库恢复过程

Mssql Server 到 MySql 之间的迁移视图