数据迁移到aurora mysql数据库

420 阅读5分钟

前言

数据库迁移到aurora mysql的方式有以下几种:
1 )Rds mysql迁移到aurora mysql

  • 使用rds mysql快照迁移
  • 使用rds mysql只读副本迁移

上述两种迁移方式非常简单,只需在aws rds 控制台操作即可,本片就不再进行具体演练,具体可参考文档

快照迁移:docs.aws.amazon.com/zh_cn/Amazo…

只读副本迁移:docs.aws.amazon.com/zh_cn/Amazo…

2)外部mysql数据库前哟aurora mysql

  • 使用mysqldump实用程序创建数据的转储,然后将该数据导入现有的aurora mysql数据库集群。
  • 将完整备份文件和增量文件从数据库复制到S3存储桶,然后从这些文件还原aurora mysql数据库集群,速度可能比使用mysqldump迁移数据要快。

1 使用mysqldump实用程序创建数据库的转储,然后将该数据导入现有aurora mysql数据库集群

因为aurora mysql与mysql兼容,所以该过程与将mysql数据导入rds mysql的过程类似,可参考文档 docs.aws.amazon.com/zh_cn/Amazo…

其整体架构如下图所示:

1.1 安装并配置好mysql数据库

我在光环云裸金属服务器上部署了mysql数据库,具体部署过程略,可以百度。

1.2 创建mysql数据库的副本
1.2.1 设置复制选项

编辑文件/etc/my.cnf sudo vi /etc/my.cnf
更新[mysqld]字段如下:
[mysqld]
log-bin=mysql-bin
server-id=1

image2.png

重启mysql服务 service mysqld restart

1.2.2 创建现有数据库的备份副本

image3.png

上图中新建了一个数据库schema_xuyi,现在将schema_xuyi进行备份,执行如下命令:

mysqldump \
--databases  schema_xuyi \
--master-data=2  \
--single-transaction \
--order-by-primary \
-r backup.sql \
-u  local_user \
-p 

image4.png

图中可见生成了备份文件backup_xuyi.sql

1.3 创建aurora mysql数据库

具体创建过程省略,注意与此前的mysql数据库版本尽量一致。

image5.png

远程连接到aurora mysql数据库,其初始状态如下图:

image6.png

1.4 使用mysql命令远程连接到aurora mysql数据库并导入此前的sql文件

执行命令:

mysql -h aurora-1-instance-1.cbgpcbkn8knw.us-east-1.rds.amazonaws.com -P 3306 -u admin -p

其中aurora-1-instance-1.cbgpcbkn8knw.us-east-1.rds.amazonaws.com部分是aurora mysql数据库的终端节点,连接成功

image7.png

执行命令 source backup_xuyi.sql;

image8.png

Workbench的刷新操作没找到,重新连接了一下aurora mysql数据库,可见其状态如下:

image9.png

其中已经有了schema_xuyi的库,说明mysqldump导入成功,本次测试只是为了验证从外部mysql导入到aurora的过程,至此本次操作完成。

2 将完整备份文件和增量文件从数据库复制到S3存储桶,然后从这些文件还原aurora mysql数据库集群

参考文档:docs.aws.amazon.com/zh_cn/Amazo…

2.1 准备工作
2.1.1 在本地服务器上安装percona

本地数据库版本是mysql5.7,建议percona版本为Percona XtraBackup 2.4

执行以下命令:

yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install -y percona-xtrabackup-24.x86_64

image10.png

从上图可见Percona-xtrabackup安装成功。

2.1.2 准许aurora mysql访问S3存储桶
  • 在跟aurora mysql数据库相同的区域中创建一个存储桶

过程比较简单,省略。

image11.png

  • 创建IAM策略以访问S3资源

可以通过IAM控制台来创建相应的策略,具体过程省略,可以授予aurora 访问S3的所有权限。

image12.png

  • 创建IAM角色以允许aurora mysql访问AWS服务

具体创建角色的过程省略,可以参考文档: docs.aws.amazon.com/z...
如下图所示,创建了一个角色role_aurora_to_s3,并将上一步的策略附加到了该角色上。

image13.png

  • 将角色与aurora mysql数据库关联

具体操作过程见文档 docs.aws.amazon.com/zh_cn/Amazo…

image14.png

如上图所示,已经将角色与aurora mysql数据库相关联。为了让角色生效还需要修改参数组,我们选择新建一个参数组

image15.png

其中参数“aurora_load_from_s3_role”的值更新为前面所创建角色的ARN。

image16.png

再修改数据库实例的数据库选项

image17.png

应用修改,立即重启数据库。

2.2 备份要还原为aurora mysql的数据库的文件
2.2.1 准备工作

为了跟之前的数据库内容区别开来,特意新建了库schema_test,并在其中新建了一张表table_test,如下图所示:

image18.png

2.2.2 使用percona xtrabackup创建备份

全量备份

xtrabackup --user=root --password=XY-zte110 --backup --target-dir=/root/backupfiles

image19.png

可见在当前目录下生成了一个backupfiles目录,该类目下的内容如上图所示。

通过aws CLI将备份文件夹整个上传到s3存储桶(具体上传的过程省略),登录s3控制台可见

image20.png

2.3 从S3存储桶还原aurora mysql数据库

登录aurora控制台,进入数据库页面

image21.png

在数据库页面点击“从S3还原”,
引擎选项->aurora
版本->我们选择的是mysql5.7

image22.png

点击“下一步”

image23.png

下一步,进入数据库详细信息页面进行设置,具体内容与新建aurora实例的过程相似

image24.png

下一步,配置高级设置

image25.png

从这个配置的过程来看,跟创建一个新的aurora实例完全相同,由此可以断定aurora从s3还原实际上是重新起了一个aurora实例。最后点击“创建数据库”

image26.png

确实是新生成一个数据库实例,耐心等待吧。
切换到数据库页面,可以看到有两个aurora实例

image27.png

image28.png

上图中的实例aurora-instance-xuyi-copy就是从s3还原出来的新的aurora实例,已经成功创建。现在远程到该实例查看数据库状况

image29.png

可见全量复制成功。
至此通过S3还原aurora数据库完成。

3 总结

首先,最大的区别是使用s3还原是重新生成了一个新的数据库实例,而使用mysqldump不会新建数据库实例。
其次,mysqldump属于逻辑复制,备份成sql脚本文件,而通过S3还原是使用xtrabackup工具进行备份,属于物理复制。
最后,官网文档说使用s3速度会快一些,本次实践没有考虑性能,故无法实际比较迁移速度。

附:关于mysqldump和xtrabackup的比较blog.51cto.com/11257187/21…

作者:光环云 徐毅

原文地址:bbs.sinnet-cloud.cn/forum.php?m…