亚马逊AWS官方博客
将 MySQL 数据库迁移到 Amazon Aurora 数据库
有很多用户在本地或云中使用标准 MySQL 来持久化业务数据,现在他们希望能使用新一代基于云架构的 Amazon Aurora 数据库。 使用 Amazon Aurora 数据库有非常多的好处,她的性能比普通的 MySQL 数据库高数倍,并且很容易能横向及纵向扩展。对于已有系统,首先会面对如何将现有数据库迁移到 Amazon Aurora 中。下面将介绍如何将一个 AWS 云中 Amazon Linux 上的 MySQL 迁移到 Amazon Aurora 的全过程,迁移的过程分为下面几个步骤:
- 安装 Percona XtraBackup 备份工具
- 备份 MySQL 数据库
- 将备份 MySQL 文件上传到 S3
- 在 Aurora Console 中还原备份文件到 Amazon Aurora
对于数据中心的 MySQL ,整个迁移过程是类似的。
Percona XtraBackup 备份工具
XtraBackup 是 MySQL 的一个开源热备份的工具,能支持全备及增量备份等。和 mysqldump 相比, mysqldump 是将数据库转换为 SQL 语句,再应用到目标数据库去。因此迁移较大 MySQL 数据库到 Aurora 时, mysqldump 的方式效率太低。而 XtraBackup 备份的是数据库的二进制数据及日志等,并且文件可以压缩,这样文件更小,因此备份和还原都更快。因此对于大数据库推荐用XtraBackup备份的方式进行迁移。
- 下载 Percona yum repository
由于 Percona XtraBackup 安装地址并不在 yum 的默认仓库(repository)里,因此运行下面命令下载并安装:
wget: http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
运行结果如下图所示:
- 安装 Percona yum repository
使用下面命令安装已下载的 rpm 包,sudo rpm -ivh percona-release-0.1-4.noarch.rpm
结果如下图所示:
- 检查 yum repository 的安装结果
运行 yum list 命令检查 percona 相关的 repository 是否被正确安装。如下命令:yum list |grep percona
命令输出类似下图:
- 安装 percona-xtrabackup 工具
运行下面 yum 命令直接安装 percona-xtrabackup 包,必须安装2.3版本以上软件。yum install percona-xtrabackup-24
输出结果如下图所示:
安装成功后,应该显示安装成功信息如下图所示:
备份 MySQL 数据库
运行下面命令备份 MySQL 实例为压缩文件。
sudo innobackupex -u root -ppassword --stream=tar /tmp | gzip -9 > ./prod_db.tar.gz
整个备份过程如下图所示:
你会看到最后显示备份成功。
xtrabackup: Transaction log of lsn (1719557) to (1719557) was copied. 180517 08:46:45 completed OK!
将备份文件上传到 S3
- 安装本地 CLI 命令行工具
使用下面命令配置命令行访问 aws 资源:aws configure
如果不了解如何配置命令行工具,请参考:
https://docs.thinkwithwp.com/zh_cn/cli/latest/userguide/cli-chap-getting-started.html - 将文件上传到 Aurora 数据库相同 Region 的 S3 bucket。
- 在 S3 上检查文件是否上传成功(也可以在命令行中直接检查)
在 Aurora Console上将 MySQL 备份文件还原为 Aurora 数据库
- 在 RDS Console 上点击 ”Restore Aurora DB cluster from s3” 开始还原过程。
- 指定具体备份信息
Source engine
当前只支持 MySQL 引擎的 S3 迁移。Source engine version
源 MySQL 数据库的版本,当前支持5.5及5.6版本。S3 bucket
上传到 s3 上 bucket 的路径。IAM role
创建一个新的角色,此角色用来授权 Aurora 访问 s3 中的备份文件。IAM role name
指定新创建角色的名称。 - 指定要还原 Aurora cluster 的信息
DB Engine
显示当前 Aurora MySQL 的引擎版本。DB Instance class
定义 Aurora 的 master 节点容量大小,临时测试环境可以使用 t 系列的机型,生产环境可以使用r系列的机型。请根据生产的压力选择合适大小的机型。Create Replica in Different Zone
Aurora 是一个集群数据库,这个集群数据库可以有一个主节点和多个 read replica 的只读节点。如果 read replica 节点分布在多个可用区,则当主节点可用区不可用时,数据库可以切换到另外一个可用区的 read replica。Settings
数据库基本信息设置。 - 指定 Aurora 环境信息
VPC
指定 Aurora 数据库需要创建在哪个 VPC 下。Subnet group
指定在哪个子网组中创建 Aurora 实例,请在 RDS Console 主页左侧 subnet groups 列表下定义子网组。Public accessibility
指定数据库是否公网可访问,一般生产数据库都设置成内网访问的模式。如果你选择的子网组是都是私有子网,则你设置成公有访问,也无法访问数据库。VPC Security group
设置安全组的信息,请确保你向目标访问 aurora 的机器开放3306端口 - 还原后去 RDS Console 中确认数据库还原成功。
总结
从上面可以知道,我们只需要几个简单的步骤,就可以将 MySQL 数据库备份然后恢复成一个 Aurora 数据库了,小伙伴们还等什么,赶紧去试试吧!