数据迁移至RDS-MySQL之利用mysqldump工具

使用mysqldump工具的优点是简单易行,容易上手;缺点是停机时间较长。因此它适用于数据量不大,或者允许停机的时间较长的情况。更多信息可参考:RDS中的MySQL备份恢复>>

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

 

迁移步骤

1)        购买RDS实例

用户购买RDS实例后,系统会为用户提供RDS实例的内/外网连接地址和端口,如:example.mysql.rds.aliyuncs.com:3306

2)        利用mysqldump备份数据

停止业务,使用mysqldump的数据导出工具,将线下原有数据库数据导出为数据文件(本步骤仅仅导出数据,不包括存储过程、触发器及函数)。

命令格式:

mysqldump -hlocalIp -uuserName -p --opt --default-character-set=utf8 --hex-blob dbName --skip-triggers > /tmp/dbName.sql

参数说明:

(1) localIp:MySQL服务器IP地址;

(2) userName:数据库用户名;

(3) dbName:需要备份的数据库名;

(4) /tmp/dbName.sql:备份生成的文件名。

3)        利用mysqldump导出存储过程、触发器和函数

备份线下原有数据库的存储过程、触发器和函数(若数据库中没有使用存储过程、触发器和函数,可跳过此步骤),在导出存储过程、触发器和函数时,需要将definer去掉,以兼容RDS。

命令格式:

mysqldump -hlocalIp -uuserName -p --opt --default-character-set=utf8 --hex-blob dbName -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/triggerProcedure.sql

参数说明:

(1) localIp:MySQL服务器IP地址;

(2) userName:数据库用户名;

(3) dbName:需要备份的数据库名;

(4) /tmp/triggerProcedure.sql:备份生成的文件名。

4)        将数据文件和存储过程文件上传到已经购买的云服务器ECS中

假设已上传的文件在云服务器中的路径为:

/tmp/dbName.sql

/tmp/triggerProcedure.sql

5)        将数据导入至RDS

远程登录到云服务器,将刚才上传的数据文件导入到已购买的RDS实例中,命令格式:

mysql -hexample.mysql.rds.aliyuncs.com –uuserName -p dbName < /tmp/dbName.sql

参数说明:

(1) example.mysql.rds.aliyuncs.com:RDS实例连接地址;

(2) userName:RDS数据库账号;

(3) dbName:需要导入的数据库名;

(4) /tmp/dbName.sql:导入所使用的文件名。

6)        将存储过程、触发器和函数导入至RDS

远程登录到云服务器,将刚才上传的存储过程文件(包含存储过程、触发器和函数,若没有则请跳过此步)导入到已购买的RDS实例中。

命令格式:

mysql -h example.mysql.rds.aliyuncs.com -u userName -p dbName < /tmp/triggerProcedure.sql

参数说明:

(1) example.mysql.rds.aliyuncs.com:RDS实例连接地址;

(2) userName:RDS数据库账号;

(3) dbName:需要导入的数据库名;

(4) /tmp/triggerProcedure.sql:导入所使用的文件名。

至此数据迁移完毕,用户可使用iDB Cloud、数据库客户端工具(如MySQL-Front)、第三方数据库管理工具(如phpMyAdmin)或程序的方式,通过RDS实例连接地址、端口号、数据库账号和密码连接数据库。详见:连接RDS>>


TAGS:RDS, Mysql, mysqldump, 数据迁移


大家在说(暂无评论) 添加评论

(*)必填项
验证码