滴滴云RDS数据迁移教程

滴滴云技术支持发表于:2018年10月15日 11:46:56更新于:2018年10月15日 11:51:06

使用mysqldump工具迁移数据到滴滴云RDS

1、  背景

由于 RDS 提供的关系型数据库服务与原生的数据库服务完全兼容,所以对用户来说,将原有数据库迁移到 RDS 实例的过程,与从一个 MySQL 服务器迁移到另外一台 MySQL 服务器的过程基本类似。

2、  前提条件

已有RDS实例,并创建数据库和账号。

已购买云服务器DC2。

3、  具体迁移步骤

(1)在本地数据库服务器需要迁移的数据库中创建账号

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

(2)给账号授权

GRANT SELECT ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
GRANT REPLICATION SLAVE ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

 

参数说明:

  • privileges:该账号的操作权限,如 SELECTINSERTUPDATE 等。如果要授权该账号所有权限,则使用 ALL

  • databasename:数据库名。如果要授权该账号所有的数据库权限,则使用通配符 *

  • tablename:表名。如果要授权该账号所有的表权限,则使用通配符 *

  • username:要授权的账号名

  • host:授权登录数据库的主机名。如果是本地用户可以使用 localhost,如果想让该用户从任意主机登录,可以使用通配符 %

  • WITH GRANT OPTION:授权该账号能使用GRANT命令,该参数为可选 

(3)使用 mysqldump 数据导出工具,将本地数据库数据导出为数据文件。

注意: 导出期间请勿进行数据更新。本步骤仅仅导出数据,不包括存储过程、触发器及函数。同时如果数据量很大,要先添加DC2磁盘容量。

mysqldump -h hostip -u username -p --opt --default-character-set=utf8 --hex-blob dbname --skip-triggers > /tmp/dbname.sql

参数说明:

  • hostip:本地数据库服务器 IP 地址

  • username:本地数据库的迁移账号

  • dbname:需要迁移的数据库名

  • /tmp/dbname.sql:备份生成的文件名

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

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

mysqldump -h hostip -u username -p --opt --default-character-set=utf8 --hex-blob dbname > /tmp/procedure.sql

参数说明:

  • hostip:本地数据库服务器 IP 地址

  • username:本地数据库的迁移账号

  • dbname:需要迁移的数据库名

  • /tmp/procedure.sql:备份生成的文件名

5、将数据文件和存储过程文件上传到 DC2 上。

将刚才导出的文件上传到DC2上,可以参考DC2帮助文档。

6、登录 DC2,将数据文件和存储过程文件导入到目标 RDS实例中。

mysql -h rds_host_ip –u username -p dbname < /tmp/dbname.sql
mysql -h rds_host_ip -u username -p dbname < /tmp/procedure.sql

参数说明:

  • rds_host_ip:RDS 实例连接地址,本例以内网地址为例

  • username:RDS 数据库的迁移账号

  • dbname:需要导入的数据库名

  • /tmp/dbname.sql:要导入的数据文件名

  • /tmp/procedure.sql:要导入的存储过程文件名