我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
使用 Amazon Aurora MySQL 跨账户迁移和二进制日志复制可减少停机时间
在收购、出售或合并操作或重组 亚马逊云科技 账户和组织结构时,将 A
在这篇文章中,我们将讨论为此类迁移执行初始数据加载的步骤和最佳实践,然后配置二进制日志复制以减少停机时间,以及切换的步骤。尽管本文重点介绍与 Aurora MySQL 兼容的数据库 (DB) 集群从一个 亚马逊云科技 账户向另一个 亚马逊云科技 账户的区域内迁移步骤,但您也可以将此解决方案用于以下用例:
-
将 Aurora MySQL 迁移到现有 亚马逊云科技 账户 中的另一个
亚马逊虚拟私有云(亚马逊 VPC) 。 - 将 Aurora MySQL 迁移到相同或不同亚马逊 VPC 中的另一个子网组
解决方案概述
该解决方案包括两个阶段:初始数据加载和持续复制(更改数据捕获)。
阶段 1:初始数据加载
有多个选项可以执行初始数据加载,例如:
-
数据库克隆:对于 Aurora MySQL,你可以使用
Aurora 克隆 。如果源账户和目标 亚马逊云科技 账户位于同一 亚马逊云科技 区域,则建议使用 Aurora 克隆进行跨账户迁移。 -
快照恢复:
从 Aurora MySQL 的数据库集群快照中 恢 复。如果源账户和目标 亚马逊云科技 账户位于不同的 亚马逊云科技 区域,则建议使用这种方法进行跨账户迁移。 -
逻辑恢复:使用本机或第三方数据库迁移方法,例如 mysqldump 或 mydumper/myloader 。
在这篇文章中,我们使用 Aurora 克隆为 Aurora MySQL 数据库集群执行初始数据加载,因为与其他方法相比,这是一种快速且经济实惠的方法。
第 2 阶段:更改数据捕获
您可以使用 MySQL
如果您使用的是
架构概述
在这篇文章中,我们使用
为了实现此解决方案,我们完成了以下步骤:
- 配置二进制日志
- 执行初始数据加载
- 在源上创建复制用户
- 配置二进制日志复制以捕获变更数据 (CDC)
- 监控复制
- 执行切换
在本演示中,源 AWS 账户为
源 Aurora MySQL 数据库集群名为 aurora-my
6144xxxxxxxx,目标账户为 2634xxxxxxxx
。
sql-source-01,目标集群是 aurora-mysql-target-01
,
使用
与亚马逊 Aurora MySQL 兼容版本 3(兼容 MySQL 8.0)。
请注意,在您的 亚马逊云科技 账户中启动新资源会产生额外费用。
先决条件
在开始之前,请务必完成以下先决条件:
-
使用
VPC 对等连接或 亚马逊云科技 Transit Gate w ay 设置源和目标 亚马逊云科技 账户的网络连接。有关更多信息,请参阅创建 VPC 对等连接 。 -
一个 Amazon VPC 安全组,其入站规则允许从源到目标的连接。有关更多信息,请参阅
使用安全组 控制资源流量 。 -
在您的主机上 安装和配置了最新版本
的 亚马逊云科技 CLI ,例如 EC2、Cloud9 或类似实例。
Aurora MySQL
1。设置二进制日志复制
在开始初始数据加载之前,二进制日志复制必须处于活动状态并捕获二进制日志。然后,可以将二进制日志用于持续复制。Aurora MySQL 支持基于行、基于语句和混合二进制日志记录格式。默认情况下,Aurora MySQL 上的二进制日志处于禁用状态,除非要从 Aurora 集群中复制数据,否则无需启用二进制日志。
由于
要启用二进制日志,请在连接到源数据库集群的自定义数据库集群 参数组 中将
binlog_form
at 参数设置为
ROW
、 STATEMENT 或 MIXED。
binlog_for
mat 是一个静态参数;您必须重新启动集群的写入器数据库实例才能使更改生效。有关启用 Aurora MySQL 二进制日志记录的更多信息,请参阅
要验证二进制日志的状态,请在源 Aurora MySQL 数据库中使用以下命令:
您也可以考虑启用增强型二进制日志,以减少开启二进制日志所造成的计算性能开销。为了减少开销,增强型 binlog 将二进制文件和事务日志并行写入存储,从而最大限度地减少在事务提交时写入的数据。增强版二进制日志在 Aurora MySQL 3.03.1 版本(兼容 MySQL 8.0.26)及更高版本上可用。有关更多信息,请参阅
2。配置二进制日志保留
在设置持续复制时,我们需要确保主 Aurora MySQL 实例上的二进制日志保留足够长的时间以捕获变更数据。要设置二进制日志保留时间范围,请使用 mys
日志保留时数的配置参数 以及在数据库集群上保留二进制日志文件的
小时数。Aurora MySQL 3.x、Aurora MySQL 版本 2.11 及更高版本的最大值为 90 天。
二进制日志保留时
数的默认值 为
NULL
。对于 Aurora MySQ
L,空
表示不保留二进制日志。
您应该根据几个关键因素来确定二进制日志保留时长,例如 Aurora MySQL 数据库集群的大小、Aurora 克隆所需的时间以及 Aurora 克隆后的二进制日志复制开始时间。在这篇文章中,您将使用以下代码在 Aurora MySQL 上将二进制日志保留期配置为 3 天:
3。执行初始数据加载
执行 Aurora MySQL 的初始数据加载包括多个步骤,例如使用 亚马逊云科技 资源访问管理器 (亚马逊云科技 RAM) 与其他账户安全共享数据库集群,然后在目标账户中设置 Aurora 克隆。
3.1 允许目标 亚马逊云科技 账户克隆数据库集群
要在目标 亚马逊云科技 账户中创建源 Aurora MySQL 数据库集群的克隆,您需要向目标 亚马逊云科技 账户授予权限。使用
在这篇文章中,您使用以下 亚马逊云科技 RAM CLI 命令在源
接下来, 在目标 亚马逊云科技 账户中使用 亚马逊云科技 RAM CLI 命令
列出所有待处理的邀请后,在目标 AWS 账户中使用 AWS RAM CLI 命令 accep
通过将目标账户添加到
3.2 使用 Aurora 克隆创建目标 Aurora MySQL 数据库集群
成功与目标账户共享 Aurora MySQL 数据库集群后,在目标 亚马逊云科技 账户中创建源数据库集群的 A
注意: 在克隆过程中,源数据库集群仍然可用于所有事务,不会影响性能。
在这篇文章中,你使用 亚马逊云科技 RDS CLI 命令将数据库
将
db-cluster 还原到时间点 AWS CLI 命令仅恢复数据库集群
。使用以下命令检查克隆状态:
集群处于
可用
状态后,您可以通过调用 亚马逊云科技 RDS CLI 命令 c
aurora
-mysql-target-01。
4。在源数据库上创建复制用户
使用复制
客户端
和复制
从属 权限,在源 Aurora MySQL 数据库上创建仅用于 复制
的用户 ID。 参见以下代码作为示例:
有关参数的更多详细信息,请参阅
5。配置持续复制
处理二进制日志复制的连接是安全的,因为它们永远不会离开 亚马逊云科技 网络,因为源数据库和目标数据库都位于私有子网中,源账户和目标账户通过 VPC 对等连接进行对等。要启动复制,让我们看看如何检索所需的二进制日志详细信息。
通过在 亚马逊云科技 命令
ribe-event
s 命令示例:
保存二进制日志文件名(在本例中我们使用了
mysql-bin-changelog.000013
和位置
77991983
的值)以开始从源 Aurora MySQL 数据库集群进行复制。
在这篇文章中,我们使用以下方法来配置和启动复制:
从 Aurora MySQL 版本 3 开始,不再使用二进制日志复制来复制数据控制语言 (DCL) 语句,例如 CREATE USER、GRANT 和 REVOKE。如果您计划在复制过程中运行任何 DCL 语句,则需要在源数据库和目标数据库上运行 DCL 语句。
6。监控复制
要监控目标数据库落后于源数据库的距离,请连接到目标数据库实例并运行
显示副本状态
(Aurora MySQL 版本 3)或
显示从属状态
(Aurora MySQL 版本 2)。在以下命令输出中,
Seconds_Behind_Source 字段告诉您目标数据库实例落后于源
数据库实例的距离:
7。执行切换
副本延迟值接近零后,您就可以进行直接转换,将应用程序指向目标账户中的 Aurora MySQL 数据库集群。我们建议您在低流量时段规划切换,并遵循内部业务切换清单和流程。以下是转换过程的关键步骤:
- 停止接受源数据库上的连接。您可以通过删除允许连接的入站规则来更新与源关联的 VPC 安全组。
- 确保从源数据库实例到目标数据库实例的复制延迟为 0。
-
调用
mysql. rds_stop_replication 过程停止二进制日志复制。
- 使用目标数据库端点更新应用程序配置或 DNS CNAME 记录。
- 在使用新目标启动应用程序之前,您还可以使用二进制日志复制设置从目标账户中的新 Aurora MySQL 集群向旧集群的复制,以满足备用要求。
- 使用目标 Aurora MySQL 数据库启动应用程序。
清理
成功转换并将应用程序连接到目标账户中的 Aurora MySQL 集群后,您可以决定暂时停止或删除源 Aurora MySQL 集群。有关停止 Aurora 集群的更多信息,请参阅
结论
在这篇文章中,我们讨论了将您的 Aurora MySQL 集群从一个 亚马逊云科技 账户迁移到另一个 亚马逊云科技 账户所涉及的各种步骤,同时设置二进制日志复制以减少停机时间。鉴于数据库迁移涉及的复杂性,我们强烈建议在生产环境中进行更改之前,先在非生产环境中测试迁移步骤。如果您计划使用
作者简介
Alok Srivastava
是亚马逊网络服务的高级数据库顾问。在客户和合作伙伴迈向 亚马逊云科技 云的过程中,他与他们合作,重点是数据库迁移和现代化计划。
Shagun Arora
是亚马逊网络服务的数据库专家解决方案架构师。她与客户合作,在 亚马逊云科技 云中设计可扩展、高度可用和安全的解决方案。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。