通过 Robert Daly Guy Baulch 和 Sudhakar Darse 于 2024 年 2 月 28 日在高级(300),Amazon Aurora,Amazon 数据库迁移加速器,兼容 MySQL,RDS for MySQL
永久链接 评论 分享链接
当企业不断扩大规模时,对于高效、可扩展和可靠的数据库的需求变得至关重要。具有先进功能和云原生架构的Amazon Aurora 为寻求升级数据库的组织提供了一个有吸引力的解决方案。对于至关重要的大型复杂数据库,几乎零停机时间的升级显得尤为困难。
在这篇文章中,我们将指导你通过跨账户的过程,将 RDS MySQL 57 数据库升级到与 MySQL 80x 兼容的 Aurora 304x,确保最小的停机时间。将 Amazon Aurora MySQLCompatible Edition 数据库从一个 AWS 账户迁移到另一个账户,是收购、出售或合并操作时常见的使用案例,或者在重新组织 AWS 账户、备份和灾难恢复策略或组织结构时。
Amazon RDS for MySQL 57 已经停止标准支持,AWS 公告提供了Amazon RDS 延长支持,使得用户能够以符合业务需求的节奏升级到新主要版本。通过迁移时进行主要版本的升级,用户可以利用新特性并延长在进一步进行主要版本升级之前的时间。
本部分提供了一个高层次的概述,包含了将 MySQL 57 数据库迁移到 Aurora 304x 跨两个 AWS 账户所需的步骤和考虑事项。截至目前,客户尚无直接将 Aurora 升级到跨账户的路径。通过使用快照和 Aurora 只读副本,您可以将数据库实例迁移至 Aurora 2078x,接着在同一位置将其升级至 304x。然后,您可以利用 AWS 数据库迁移服务AWS DMS采用变更数据捕获 (CDC) 复制任务,从 Amazon RDS for MySQL 迁移至 Amazon Aurora MySQLCompatible Edition,以满足严格的恢复时间目标 (RTO) 要求并满足您的使用场景。
以下图示展示了解决方案架构。
实施此解决方案的高层次步骤如下:
从账户 A 的 RDS for MySQL 实例创建快照。共享账户 A 的 RDS for MySQL 实例快照给账户 B。当快照在账户 B 可用时,恢复该快照。从恢复的 RDS for MySQL 实例创建 Aurora 只读副本。使用 AWS 管理控制台 或 AWS 命令行界面 (AWS CLI) 将 Aurora 只读副本提升为独立的数据库集群。对 Aurora 独立数据库集群执行 就地升级,从 2078 升级到 304x。创建 AWS DMS 仅 CDC 复制任务,选择迁移类型。指定快照创建之前的自定义起始点,允许 AWS DMS 从账户 A 的 Amazon RDS for MySQL 源开始复制任务。监控 CDC 复制延迟,并在延迟达到零时将流量重定向到目标 Aurora 集群。不同 AWS 服务之间,特别是跨账户迁移具有固有的复杂性。了解这些迁移的原因可以帮助企业和开发者做出明智的决策:
迁移好处描述服务升级Aurora 提供了 Amazon RDS for MySQL 57 中不可用的多种性能改进和功能。跨账户管理大企业通常为不同的部门、项目或开发生命周期的不同阶段拥有多个 AWS 账户。增强的安全性跨账户迁移可以将关键数据放置在更安全的环境中,与其他资源隔离。近乎零停机通过使用 AWS DMS 来实现过渡的最小干扰。云架构Aurora 通过采用分布式架构和优化读写操作,提供了比传统 Amazon RDS for MySQL 更高的性能。成本效益虽然迁移可能存在前期成本,但考虑到性能提升和有效的数据存储机制总体节省,长期成本效益显著。本文中的步骤和准备工作提供了跨 AWS 账户升级和设置 MySQL 与 Aurora MySQLCompatible 之间复制的一般指导。在执行之前,请始终参考最新的 AWS 文档和最佳实践以获得准确的信息,因为 AWS 服务和功能可能随时间变化。
确保两 AWS 账户之间建立了适当的网络连接,这可能包括设置 VPC 对等连接或 VPN 连接,具体取决于您的网络架构。在每个账户中创建 AWS 身份与访问管理 (IAM) 角色,具备跨账户访问的必要权限。源账户账户 A应允许目标账户账户 B承担其 IAM 角色,反之亦然。为源 MySQL 实例和目标 Aurora MySQL 实例配置安全组,以允许它们之间的入站和出站流量。验证源实例上的 MySQL 版本与目标实例的 Aurora MySQL 版本兼容。在从 Aurora 57 升级到 80x 时,你需要考虑版本间的兼容性问题和可能变化的功能。建议查看 MySQL 社区版本说明,以了解对您的应用程序和数据库可能产生的影响。为源数据库和目标数据库之间的安全通信配置 SSL 证书,以增强数据安全性。在迁移前,确保创建了目标 Aurora MySQL 新的主要版本 304x 的实例和集群 自定义参数组。强烈建议参考文档中列出的关于 MySQL 的详细信息,以确保满足 DMS 的 MySQL 作为源。
完成以下迁移前任务:
为了使用逻辑复制和 AWS DMS CDC,确保已启用自动备份,并且在源 Amazon RDS for MySQL 上启用二进制日志。要启用二进制日志,请在创建自定义参数组时将 binlogformat 参数修改为 ROW如果您使用的是默认参数组。
确保 AWS DMS 可以访问二进制日志。由于 AWS 管理的 MySQL 兼容数据库会尽快清除二进制日志,因此您应增加日志的可用时长。例如,运行以下命令将日志保留时间增加到 24 小时:
sql mysqlgt call mysqlrdssetconfiguration(binlog retention hours 24)
plaintext Query OK 0 rows affected (000 sec)
sql mysqlgt CALL mysqlrdsshowconfiguration name value description binlog retention hours 24 binlog retention hours specifies the duration in hours before binary logs are automatically deleted source delay 0 source delay specifies replication delay in seconds between current instance and its master target delay 0 target delay specifies replication delay in seconds between current instance and its future readreplica 3 rows in set (000 sec)
在本篇文章中,我们使用示例数据库 employees 并在其中的 largedata 表下创建临时数据使用。以下 SQL 通过简单的插入在测试中创建数据,以显示快照恢复和持续复制:sql USE employees
CREATE TABLE largedata ( id BIGINT AUTOINCREMENT PRIMARY KEY name VARCHAR(255) NOT NULL value DOUBLE NOT NULL createdat DATETIME DEFAULT CURRENTTIMESTAMP )
使用以下代码插入示例数据:sql INSERT INTO largedata (name value) VALUES (Data1 105)
当示例数据存在时,使用以下命令获取 binlog 位置:sql mysqlgt show master status File Position BinlogDoDB BinlogIgnoreDB ExecutedGtidSet mysqlbinchangelog000228 456 1 row in set (000 sec)
要在 AWS 账户之间共享 RDS 快照,可以按照以下步骤操作:
从 RDS for MySQL DB 实例创建一个 快照。将快照共享给目标 AWS 账户。共享 未加密的手动数据库快照 允许授权的 AWS 账户直接从快照恢复数据库实例,而不必复制快照再进行恢复。然而,当共享 加密的数据库快照 时,您可以复制数据库快照并从复制中恢复数据库实例。在下图中,快照复制完成后,您可以在目标 AWS 账户中查看快照。
您可以将未加密的 RDS for MySQL 快照恢复到加密的 RDS for MySQL 实例中。但是,您必须先对未加密的快照进行复制,并在复制备份时指定 KMS 加密密钥。
加速器下载免费永久版有关从 RDS for MySQL 实例恢复的说明,请参考教程:从 DB 快照恢复 Amazon RDS DB 实例。

导航到恢复的 RDS for MySQL 实例的 日志与事件 标签页,并从名为“从崩溃恢复的 binlog 位置”中复制 binlog 位置。该位置将在 AWS DMS 任务的后续步骤中使用。
要从 MySQL DB 实例创建 Aurora MySQL 数据库集群,可以 创建 Aurora 只读副本。更新在源 MySQL DB 实例上进行的修改会异步复制到 Aurora 只读副本集群。针对每个 TB 的数据,此过程可能需要几个小时。
当 Aurora 副本集群在线并可用时,您可以将 Aurora 只读副本提升为独立的 Aurora MySQL 数据库集群。
升级 Aurora 从版本 57 到 80x 涉及仔细的规划和实施,以确保平稳过渡。您可以通过控制台或 AWS CLI 对提升后的 Aurora 集群进行就地升级。
当集群在线且可用时,我们可以创建 AWS DMS 复制实例 和 配置 AWS DMS CDC 任务。AWS DMS 复制实例可以在任何一个账户中创建。在此博客中,DMS 复制实例是在源账户中创建的。创建 CDC 任务可以让您近实时地从源数据库复制变更到目标数据库。
AWS DMS 端点用于定义迁移任务中的源和目标数据库。端点包含连接到数据库所需的信息,例如服务器名称、用户凭证、端口和数据库名称。要为源和目标 创建端点,您可以使用控制台或 AWS CLI 进行 API 调用。下图展示了使用 AWS DMS 控制台创建仅 CDC 任务的任务创建过程。对于 系统变更编号,输入从恢复的 RDS 实例的 日志与事件 标签页中获得的 binlog
生成式人工智能的网络边界安全保护 安全博客
生成式人工智能的网络边界安全保护关键要点生成式人工智能应用越来越流行,应用需强化网络边界保护以防止未授权使用和其他安全威胁。网络边界保护主要集中在前端身份验证、使用Web应用防火墙WAF和DDoS攻击防护三大领域。AWS提供多种工具和架构选项,用于确保生成式人工智能应用的安全。随着生成式人工智能AI...
非结构化数据内容库与多语言语义搜索:第二部分 架构博客
多语言语义搜索的非结构化数据内容库:第二部分主要要点本文延伸了内容库的多语言语义搜索功能,保留了基于访问控制逻辑的架构。我们将介绍如何利用 Amazon Textract 进行光学字符识别OCR,生成文本的嵌入向量,并使用 Amazon OpenSearch Service 提供 kNN 搜索功能,...