将 MySQL 数据库迁移到 Amazon Aurora 数据库

时间:2024-05-19 19:42:44

有很多用户在本地或云中使用标准 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备份的方式进行迁移。

  1. 下载 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
    运行结果如下图所示:
    将 MySQL 数据库迁移到 Amazon Aurora 数据库

  2. 安装 Percona yum repository
    使用下面命令安装已下载的 rpm 包。
    将 MySQL 数据库迁移到 Amazon Aurora 数据库
    结果如下:
    将 MySQL 数据库迁移到 Amazon Aurora 数据库

  3. 检查 yum repository 的安装结果
    运行 yum list 命令检查 percona 相关的 repository 是否被正确安装。如下命令:
    yum list |grep percona
    命令输出类似下图:将 MySQL 数据库迁移到 Amazon Aurora 数据库

  4. 安装 percona-xtrabackup 工具
    运行下面 yum 命令直接安装 percona-xtrabackup 包,必须安装2.3版本以上软件。
    yum install percona-xtrabackup-24
    输出结果如下图所示:将 MySQL 数据库迁移到 Amazon Aurora 数据库

安装成功后,应该显示安装成功信息如下图所示:将 MySQL 数据库迁移到 Amazon Aurora 数据库

备份 MySQL 数据库
运行下面命令备份 MySQL 实例为压缩文件。
sudo innobackupex -u root -ppassword --stream=tar /tmp | gzip -9 > ./prod_db.tar.gz
整个备份过程如下图所示:将 MySQL 数据库迁移到 Amazon Aurora 数据库

你会看到最后显示备份成功。
xtrabackup: Transaction log of lsn (1719557) to (1719557) was copied.
180517 08:46:45 completed OK!
将 MySQL 数据库迁移到 Amazon Aurora 数据库

将备份文件上传到 S3

  1. 安装本地 CLI 命令行工具
    使用下面命令配置命令行访问 aws 资源:
    aws configure
  2. 将文件上传到 Aurora 数据库相同 Region 的 S3 bucket。
    将 MySQL 数据库迁移到 Amazon Aurora 数据库
  3. 在 S3 上检查文件是否上传成功(也可以在命令行中直接检查)。
    将 MySQL 数据库迁移到 Amazon Aurora 数据库
    在 Aurora Console上将 MySQL 备份文件还原为 Aurora 数据库
  4. 在 RDS Console 上点击 ”Restore Aurora DB cluster from s3” 开始还原过程。
    将 MySQL 数据库迁移到 Amazon Aurora 数据库
  5. 指定具体备份信息
    将 MySQL 数据库迁移到 Amazon Aurora 数据库
    当前只支持 MySQL 引擎的 S3 迁移。
    源 MySQL 数据库的版本,当前支持5.5及5.6版本。
    上传到 s3 上 bucket 的路径。
    创建一个新的角色,此角色用来授权 Aurora 访问 s3 中的备份文件。
    指定新创建角色的名称。
  6. 指定要还原 Aurora cluster 的信息
    将 MySQL 数据库迁移到 Amazon Aurora 数据库
    显示当前 Aurora MySQL 的引擎版本。
    定义 Aurora 的 master 节点容量大小,临时测试环境可以使用 t 系列的机型,生产环境可以使用r系列的机型。请根据生产的压力选择合适大小的机型。
    Aurora 是一个集群数据库,这个集群数据库可以有一个主节点和多个 read replica 的只读节点。如果 read replica 节点分布在多个可用区,则当主节点可用区不可用时,数据库可以切换到另外一个可用区的 read replica。
    数据库基本信息设置。
  7. 指定 Aurora 环境信息
    将 MySQL 数据库迁移到 Amazon Aurora 数据库
    指定 Aurora 数据库需要创建在哪个 VPC 下。
    指定在哪个子网组中创建 Aurora 实例,请在 RDS Console 主页左侧 subnet groups 列表下定义子网组。
    指定数据库是否公网可访问,一般生产数据库都设置成内网访问的模式。如果你选择的子网组是都是私有子网,则你设置成公有访问,也无法访问数据库。
    设置安全组的信息,请确保你向目标访问 aurora 的机器开放3306端口。
  8. 还原后去 RDS Console 中确认数据库还原成功。