MySQL数据库迁移到AWS RDS

迁移步骤

备份数据库

1.
使用客户提供的账号密码登录数据库,查看实例中有哪些库,如下图所示,mldld_ios_game1xxxx 为迁移前试点选取的某游戏营销数据库,需要全部备份出来。游戏上线已经有几年了,中间有合服,所以游戏营销数据库目前并不是按照顺序连续的。

2.将游戏营销数据库备份出来,进入备份目录,cd /data/backup/mldld-ios-1(每组数据库创建一个对应的备份目录),使用如下命令依次将游戏营销数据库导出备份,回车后输入备份账号的密码。备份规则原来的库名跟备份后的SQL名字对应上。

MySQL数据库迁移到AWS RDS

3. 查看导出的备份。

MySQL数据库迁移到AWS RDS

将导出的备份上传至S3存储桶

1.在S3存储桶中创建对应每组自建MySQL数据库的文件夹,例如mldld-ios-1文件夹用来存放mldld-ios-1的备份SQL文件。如下图所示。

MySQL数据库迁移到AWS RDS

2.将备份上传至对应的文件夹,每组自建数据库有一个对应的文件夹,上传时注意文件夹目录是否对应。在自建MySQL数据库机器上将SQL文件上传至S3存储桶中对应的文件夹中。命令如下。

aws s3 cp mldld_ios_game10001.SQL s3://客户-test/mldld-ios-1/

MySQL数据库迁移到AWS RDS

3.所有文件上传完毕后去S3存储桶中查看,如下如所示,SQL文件都已经上传。

MySQL数据库迁移到AWS RDS

从S3中将SQL文件恢复至RDS

1. 配置一台可以连接RDS的EC2机器,在EC2 机器上下载S3上的SQL文件。创建一个文件夹,对应每个自建MySQL的文件夹,存放相应的备份SQL文件。以本例为示,创建一个名为 /data/backup/mldld-ios-1 文件夹,将S3上的SQL文件下载到此文件夹中。命令如下.

创建文件夹 mkdir
-p /data/backup/mldld-ios-1

下载SQL文件
aws s3 cp s3://客户-test/mldld-ios-1/
./ --recursive

下载完成的SQL文件如下图所示

MySQL数据库迁移到AWS RDS

2.从EC2机器连接RDS,进入RDS后创建游戏营销数据库,命令如下。

mySQL -h客户-test.cl55sjum9ijk.rds.cn-northwest-1.amazonaws.com.cn
-uadmin -p 回车后输入密码,登录进入RDS。

创建游戏营销数据库,命令为 create
database mldld_ios_game10001;

依次创建所需要导入的游戏营销数据库,全部创建完后如下图所示。

MySQL数据库迁移到AWS RDS

3.还原数据库,依次还原创建的游戏营销数据库,命令如下。

use mldld_ios_game10010;

如下图所示database 切换成功

MySQL数据库迁移到AWS RDS

切换成功后,将SQL文件导入该库,命令如下。

source
/data/backup/mldld-ios-1/mldld_ios_game10010.SQL

成功后显示如下图。

MySQL数据库迁移到AWS RDS

至此,已经将SQL文件还原到RDS了,其它的游戏营销数据库可以按照此方法依次导入还原即可。

同步自建MySQL Binlog到RDS上

1.在自建MySQL数据库上创建一个用户,命令如下。

create user dbback@'%' identified by
'Repl^123^qwer';

grant replication slave on *.* to
'dbback'@'%';

flush privileges;

成功后如下图所示

MySQL数据库迁移到AWS RDS

2.在自建MySQL上查看binlog和Position,命令如下。

show master status;

MySQL数据库迁移到AWS RDS

3.在RDS上执行命令,将自建MySQL设置为主库,命令如下。

CALL
mySQL.rds_set_external_master ('172.31.34.213', 3306, 'dbback',
'Repl^123^qwer', 'binlog.000019', 351156712, 0);

如下图所示,显示设置主库成功。

MySQL数据库迁移到AWS RDS

4.在RDS上启动复制,将自建MySQL的数据复制到RDS上,命令如下。

CALL mySQL.rds_stop_replication;

如下图所示,显示成功。

MySQL数据库迁移到AWS RDS

5.在RDS上查看结果,命令如下。

show slave status\G;

如下图所示,红框处的内容跟之前在自建MySQL上查看的binlog文件以及Pos点对应上了,说明RDS已经追平自建MySQL的binlog了。

MySQL数据库迁移到AWS RDS

6.校验主从复制一致性,安装percona-toolkit工具,执行以下命令。

pt-table-checksum
u='admin',p='qa#Df5R6y',h='172.31.34.213' --replicate=percona.checksums
--no-check-binlog-format --recursion-method=processlist --nocheck-replication-filters
--databases=mldld_ios_game10001,mldld_ios_game10010,mldld_ios_game10025,mldld_ios_game10040,mldld_ios_game10050,mldld_ios_game10065,mldld_ios_game10080,mldld_ios_game10095,mldld_ios_game10100,mldld_ios_game10120

如下图所示,DIFFS这一列数值都为0说明主从数据一致,表的数量相同。

MySQL数据库迁移到AWS RDS