RDS MariaDB实例间的数据迁移

RDS MariaDB可以通过DTS或mysqldump工具实现实例间的数据迁移,本文将介绍详细的操作步骤。

方法一:使用DTS

RDS MariaDB实例间的迁移

方法二:使用mysqldump

下文以MariaDB 10.3版本为例,演示RDS MariaDB实例间的数据迁移。

前提条件

  • 本地主机或阿里云ECS实例安装CentOS 7系统并安装MySQL 5.7。

  • 两个RDS MariaDB实例设置白名单放通CentOS 7所在主机或实例的外网IP地址,详情请参见设置白名单

  • 两个RDS MariaDB实例都已申请外网地址,详情请参见申请或释放外网地址

操作步骤

  1. 使用客户端工具登录目的MariaDB实例,创建空数据库。

  2. 在CentOS 7使用自带的mysqldump工具将源MariaDB实例的数据库导出为数据文件。

    mysqldump -h <源实例外网地址> -P <源实例端口> -u <源实例高权限账号> -p<源实例高权限账号密码> --opt --default-character-set=utf8 --hex-blob <要迁移的数据库名称> --skip-triggers > /tmp/<要迁移的数据库名称>.sql

    示例

    mysqldump -h rm-xxx.mariadb.rds.aliyuncs.com -P 3306 -u test -pTestxxx --opt --default-character-set=utf8 --hex-blob testdb --skip-triggers > /tmp/testdb.sql
    说明

    导出期间请勿进行数据更新。本步骤仅导出数据,不包括存储过程、触发器及函数。

  3. 使用mysqldump导出存储过程、触发器和函数。

    mysqldump -h <源实例外网地址> -P <源实例端口> -u <源实例高权限账号> -p<源实例高权限账号密码> --opt --default-character-set=utf8 --hex-blob <要迁移的数据库名称> -R > /tmp/<要迁移的数据库名称>trigger.sql

    示例

    mysqldump -h rm-xxx.mariadb.rds.aliyuncs.com -P 3306 -u test -pTestxxx --opt --default-character-set=utf8 --hex-blob testdb -R > /tmp/testdbtrigger.sql
    说明

    若数据库中没有使用存储过程、触发器和函数,可跳过此步骤。

  4. 通过如下命令将数据文件、存储过程、触发器和函数导入到目标RDS MariaDB实例中。

    mysql -h <目的实例外网地址> -P <目的实例端口> -u <目的实例高权限账号> -p<目的实例高权限账号密码> <目的实例数据库名称> < /tmp/<要迁移的数据库名称>.sql
    mysql -h <目的实例外网地址> -P <目的实例端口> -u <目的实例高权限账号> -p<目的实例高权限账号密码> <目的实例数据库名称> < /tmp/<要迁移的数据库名称>trigger.sql

    示例

    mysql -h rm-xxx.mariadb.rds.aliyuncs.com -P 3306 -u test2 -pTest2xxx test001 < /tmp/testdb.sql
    mysql -h rm-xxx.mariadb.rds.aliyuncs.com -P 3306 -u test2 -pTest2xxx test001 < /tmp/testdbtriggertrigger.sql