使用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:该账号的操作权限,如 SELECT、INSERT、UPDATE 等。如果要授权该账号所有权限,则使用 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:要导入的存储过程文件名