每年,AWS 都会在其 re:Invent 大会上为其 AWS 数据库客户准备一些有吸引力的东西。今年也不例外。该公司为其Amazon Relational Database Service (Amazon RDS)推出了四项新功能,旨在让其托管数据库客户的生活更轻松。
2009 年,AWS 率先使用 Amazon RDS 为开源数据库管理系统 (DBMS) 提供完全托管的云数据库服务。该公司的目标是加快采用开源数据库,如 MySQL 和 PostgreSQL。这是为了帮助开发人员专注于构建应用程序,同时消除 AWS 定义的支持数据库的“无差别繁重工作”。这些任务通常会让数据库管理员 (DBA) 陷入困境,例如定期修补周期、性能优化、备份和灾难恢复。
为了进一步改善用户体验,AWS 与多个开源社区建立了关系,以提供开源用户所需的增强功能。2022 年,AWS 在开源社区(包括 PostgreSQL、Redis 等)中增加了 435 个已接受的贡献。
Amazon RDS 在过去十年中不断发展壮大,现在支持七种托管数据库服务。其中,Amazon RDS 支持两个商业数据库引擎——Amazon RDS for Oracle 和 Amazon RDS for SQL Server——以及几个开源或开源兼容版本——Amazon Aurora PostgreSQL 兼容版、Amazon Aurora MySQL 兼容版、Amazon RDS对于 PostgreSQL、Amazon RDS for MySQ L 和Amazon RDS for MariaDB。
AWS 通过提供领先的安全性、持久性、可用性和可靠性功能,帮助开发人员将他们的应用程序与开源数据库部署到生产环境中。开发人员可以访问他们喜爱的熟悉的开源工具和功能。一个很好的例子是 AWS 宣布 Amazon RDS支持 MariaDB 10.6。此版本包括可供 MariaDB 用户使用的新功能,例如 MyRocks 存储引擎支持、Oracle PL/SQL 兼容性、Atomic DDL 支持等等。同时,喜爱 MariaDB 的开发人员可以享受 AWS 主导的创新,例如Amazon RDS Blue/Green Deployments,这是他们最近发布的一项功能,可自动执行高级 DevOps 操作技术。
随着不断创新,AWS 表示将继续直接与开源社区合作,加速创新,为所有用户改进这些技术。
AWS 在 re:Invent 上发布了四个版本,继续履行这一承诺,通过改进 PostgreSQL、MySQL 和 MariaDB 的性能、安全性和易用性的新功能为其支持的开源社区及其客户提供改进数据库。PostgreSQL 的可信语言扩展使开发人员能够更安全地在其 PostgreSQL 数据库上快速运行扩展。它们还大大扩展了 Aurora 和 Amazon RDS 上可用的扩展数量。Amazon RDS 蓝绿部署使数据库更新变得轻而易举。最后,对于希望提高 Amazon RDS for MySQL 数据库性能的开发人员,有两项新功能。Amazon RDS 优化写入可加速写入事务吞吐量,而 Amazon RDS 优化读取可加快最复杂查询的处理速度。
PostgreSQL 的可信语言扩展
在 re:Invent 2022 上,AWS 宣布了适用于 PostgreSQL 的可信语言扩展 (TLE)。这是一个针对 PostgreSQL 扩展的新开发工具包和开源项目,供开发人员构建高性能 PostgreSQL 扩展并在 Aurora 和 Amazon RDS 等托管服务上安全地运行它们。
从该项目的 9.1 版本开始,开发人员已经能够为 PostgreSQL 编写扩展,使开发人员能够扩展其 PostgreSQL 数据库的功能。但是,PostgreSQL 扩展与数据库本身在相同的进程空间中运行。虽然这提高了数据库性能,但它也使数据库容易受到潜在错误的影响,因为创建和运行扩展需要 C 语言和 PostgreSQL 内部知识。如果未解决,错误可能会中断操作或使数据库完全崩溃。
因此,在过去,托管服务(如 Aurora 和 Amazon RDS)只会提供一系列扩展以在其数据库上运行。虽然这有助于消除验证这些扩展的负担,但它也阻止了开发人员使用可用的 PostgreSQL 扩展的完整库。
TLE 解决了这个问题,并允许开发人员快速构建和安全运行高性能 PostgreSQL 扩展,而无需 AWS 通过使用受信任的编程语言来验证代码。支持的语言包括 JavaScript、PL/pgSQL、Perl 和 SQL。使用这些语言,编码人员现在可以更轻松地进行扩展,因为他们不必了解 PostgreSQL 文件系统的内部工作原理。
TLE 有助于让 DBA 高枕无忧,因为该项目通过限制对不安全资源的访问同时将错误限制在单个数据库连接中来帮助保护数据库。对于 Aurora 和 Amazon RDS 客户,TLE 本身作为扩展运行,并通过 rds_superuser 角色进行管理。DBA 可以使用此角色分配细粒度的权限,以控制哪些用户可以安装和运行扩展。
AWS 将 TLE 作为一个开源项目启动,并与 PostgreSQL 核心团队合作,使其在 Apache-2.0 许可下可用于上游。这意味着任何 PostgreSQL 用户都可以使用 TLE。此外,因此,独立软件供应商 (ISV) 可以使用 TLE 为 Aurora 和 Amazon RDS 客户提供扩展。
对于有兴趣了解更多有关该项目或为该项目做出贡献的 PostgreSQL 客户,他们现在可以在官方的Trusted Language Extensions GitHub 存储库上这样做。希望在本地 PostgreSQL 数据库中构建和测试 TLE 的开发人员可以在克隆存储库后使用源代码。从新功能、示例扩展、附加文档到错误报告,欢迎所有贡献。
Amazon RDS 蓝/绿部署
AWS 发布的第二大功能是完全托管的 Amazon RDS Blue/Green Deployments 功能。此功能面向希望更安全、更简单、更快速地更新数据库同时确保零数据丢失的客户。适用于 Aurora MySQL 兼容版 5.6 及更高版本、RDS for MySQL 5.7 及更高版本以及 RDS for MariaDB 10.2 及更高版本,Blue/Green Deployments 旨在让开发人员在一分钟内快速切换数据库,而无需更改应用程序.
过去,Aurora 和 Amazon RDS 客户在更新数据库时可以选择两种方法。首先,通过就地更新,客户用包含他们更改的新版本覆盖了他们的旧数据库。这种方法会给生产工作负载的安全带来风险,并且经常会导致不可预测的停机时间。
一种更复杂的方法要求 Amazon RDS 客户使用 Amazon RDS 数据库克隆和只读副本来手动创建暂存环境并使其与生产环境保持同步。创建、同步和更新该环境需要付出努力。客户还必须在暂存环境中处理更改的验证,然后在完成后将其推广到生产环境。
Amazon RDS Blue/Green Deployments 自动处理暂存环境的创建,称为“绿色环境”。然后,他们使用逻辑复制来同步暂存和生产环境或“蓝色”环境,从而减轻客户的负担,因此当他们准备好切换时,该过程可以在一分钟内完成。
蓝/绿部署还使切换过程更容易。使用“切换护栏”,他们在更新过程中暂停对两个环境的写入,这允许绿色环境赶上蓝色环境,为客户提供零数据丢失。这些防护栏还会检查障碍,例如复制错误、数据库实例运行状况和长时间运行的事务。这些防护机制允许客户设置最长可容忍停机时间(低至 30 秒),从而帮助客户实现 RTO 或恢复时间目标。如果切换超过此指定时间,Blue/Green Deployments 将恢复写入蓝色环境。
构建者可以开始使用蓝/绿部署进行更新,例如主要/次要版本升级、模式修改、实例扩展、引擎参数更改以及使用 Amazon RDS 控制台的维护更新。
Amazon RDS 优化写入
借助Amazon RDS Optimized Writes,根据 AWS,RDS for MySQL 客户可以通过将写入事务吞吐量提高一倍来提高其数据库的性能。
MySQL 将其 16 kibibyte (KiB) 页面在内存中以 4 KiB 块的形式递增地写入存储。危险在于,如果系统出现故障,数据可能会被破坏,并且这些数据不会被存储。为了防止这种情况,MySQL 使用“双写缓冲区”,因此数据首先写入缓冲区,然后存储。这意味着,即使发生故障,用户也可以访问其数据的完整副本。
这种额外的保护是有代价的。通过写入两次,它使写入数据所需的时间加倍,并且占用的 IOPs 带宽也增加了一倍。如果用户有大量并发事务,他们将需要提供额外的存储 IOP 来维持他们的性能要求,这会增加成本。
优化写入解决了 RDS for MySQL 客户的这个问题。他们不是将数据写入两次,而是在单个原子操作中写入 16 KiB 数据页。为此,他们利用了Torn Write Prevention ,这是AWS Nitro 系统中的一项新功能,可确保在全有或全无写入事务中将数据写入存储,从而消除了对双写缓冲区的需求。
优化写入无需额外费用即可使用,目前可供客户使用受支持的版本和实例类型在 RDS for MySQL 中创建新数据库。客户可以通过创建新的受支持数据库并使用AWS Database Migration Service执行从旧实例到新实例的数据传输,将现有数据库转换为使用优化写入。
Amazon RDS 优化读取
最后,RDS for MySQL 和 RDS for MariaDB 构建者的工作负载需要复杂的查询处理,可以通过Amazon RDS Optimized Reads将查询速度提高 2 倍。
通常,在处理查询时,RDS for MySQL 和 RDS for MariaDB 从Amazon Elastic Block Store读取。虽然此过程对于大多数工作负载都是有效的,但那些处理复杂查询(例如需要分组或排序的查询)的过程会导致 RDS for MySQL 和 RDS for MariaDB 生成临时对象。当这些对象不适合内存时,它们将被移动到磁盘存储,这意味着它们被写入 Amazon EBS 并从中读取。
优化读取通过将复杂查询的临时表直接放置在数据库实例的本地 NVMe(非易失性存储器高速)SSD 存储上,加快 RDS for MySQL 和 RDS for MariaDB 中的复杂查询处理。优化读取将提高查询速度,这些查询的用例需要涉及排序、哈希聚合、高负载连接和公用表表达式 (CTE) 的复杂查询。
优化读取适用于使用 8.0.28 及更高版本的 RDS for MySQL 客户以及使用 10.4.25、10.5.16、10.6.7 及更高版本的 MariaDB 客户的 RDS。
在过去几年中,Amazon Aurora 和 Amazon RDS 继续在其开源和开源兼容数据库上进行创新,并且没有放缓的迹象。这些创新继续为 AWS 和开源用户等简化数据库实施过程。通过继续在其托管产品中构建自动化,Amazon Aurora 和 Amazon RDS 客户能够降低其内部管理成本并将这些好处传递给他们的客户。
文章来源:AWS
https://www.theregister.com/2023/01/31/aws_supercharges_amazon_rds_at/




