AlloyDB for PostgreSQL 是一项与 PostgreSQL 兼容的全代管式数据库服务,专为混合事务处理和分析处理等要求严苛的工作负载而设计。AlloyDB 将 Google 打造的数据库引擎与基于云的多节点架构搭配使用,可提供企业级性能、可靠性和可用性。
AlloyDB 的运作方式
应用使用标准 PostgreSQL 协议和技术连接到 AlloyDB 实例。然后,应用使用 PostgreSQL 查询语法与数据库交互。
在底层,AlloyDB 利用基于云的组件和功能层次结构,旨在最大限度地提高数据可用性并优化查询性能和吞吐量。 Google Cloud借助管理工具,您可以监控 AlloyDB 部署的运行状况,调整其规模和大小,以最佳方式满足工作负载不断变化的需求。
集群
给定 Google Cloud区域内的单个 AlloyDB 部署会将其所有资源整理到一个集群中。这包括您的所有数据库、日志和其他元数据。AlloyDB 会在单个虚拟私有云 (VPC) 中部署一个集群的所有资源,并使用由 Google 设计并针对 AlloyDB 进行了优化的云端文件系统。
节点和实例
集群包含多个节点,这些节点是专用于运行与 PostgreSQL 兼容的数据库引擎的虚拟机实例,应用会使用该引擎来查询集群的数据。AlloyDB 会将节点整理为实例,每个实例在 VPC 中都有一个专用静态 IP 地址。在实践中,您的应用会使用 PostgreSQL 协议连接到这些 IP 地址的实例。然后,实例会将 SQL 查询传递给其节点。
AlloyDB 有两种实例:
主实例:每个集群都有一个主实例,可提供对数据的读取或写入访问点。主实例可以是高可用性 (HA) 实例,也可以是基本实例。
高可用性主实例:高可用性主实例有两个节点:一个活跃节点和一个备用节点。AlloyDB 会监控主用节点的可用性,并在必要时自动将备用节点提升为主用节点。
基本实例:不需要高可用性的非生产环境可以选择使用基本实例。基本实例只有一个节点,没有备用节点。如需了解详情,请参阅使用基本实例降低费用。
读取池实例:您的集群可以选择包含一个或多个读取池实例,每个实例包含一个或多个只读节点,整个集群最多不超过 20 个。AlloyDB 会自动对发送到读取池实例的所有请求进行负载均衡,并将其路由到实例的节点。
对于更简单的用例,集群只能包含主实例,没有读取池,并且应用会针对所有查询使用主实例。对于更高要求的工作,您可以向集群添加读取池实例。然后,您可以配置报告或分析应用,以向这些数据库发送读取请求。此方法可将负载分散到多个节点,从而减轻主实例的负载并提高可伸缩性。
随着应用需求的变化,您可以随时添加、移除或调整读取池实例的节点数量。此外,您还可以根据需要调整实例组成节点的内存和 vCPU 数量,并且停机时间最短。扩缩实例不会造成数据丢失,因为 AlloyDB 会将您的数据存储在集群的灵活存储层中,而不是在实例中。
下图展示了一个示例集群,该集群已扩容以处理高要求的工作负载,其中包含多个负载均衡只读实例:
主要特性
除了前面所述的多节点架构固有的纵向和横向扩缩优势之外,AlloyDB 还在许多方面与常规 PostgreSQL 安装有所不同。以下部分将深入探讨 AlloyDB 的关键功能。
自动和自适应数据库功能
为每个 AlloyDB 节点提供支持的完全与 PostgreSQL 兼容的数据库引擎具有多项功能,可持续分析实例处理的查询的结构和频率,并使用这些信息建议架构改进或自动应用优化:
索引顾问可帮助您根据使用模式,找出使用新索引来优化数据库架构的机会。
列式引擎可以使用列式格式将数据存储在内存中,从而加快分析查询的性能。这样,AlloyDB 便可在需要时使用高级处理技术高效扫描大量表数据。
PostgreSQL 过时数据 autovacuum 功能的自适应变体会自动调整与清理相关的参数,以最适合您的工作负载形状。
自动内存和存储管理系统利用 AlloyDB 运行的 Google 构建的云端环境,根据需要不断分配和释放内存和存储空间,以便让您的集群以最佳性能和资源效率运行。
高可用性
默认情况下,AlloyDB 集群通过位于两个不同可用区的主实例的冗余节点提供高可用性 (HA),并支持自动故障切换。
在不需要高可用性且处于非生产环境中的集群可以选择使用基本单可用区主实例。
添加包含至少两个节点的读取池实例,可进一步创建负载均衡的多可用区高可用性数据访问点。所有读取池实例都独立于主实例运行。
如需详细了解特定区域的注意事项,请参阅地理位置和区域。
数据备份和灾难恢复
AlloyDB 采用连续备份和恢复系统,可让您根据可调整的保留期限内的任意时间点创建新的集群。这样,您就可以快速从数据丢失事故中恢复。
此外,AlloyDB 还可以按需或定期创建和存储集群数据的完整备份。您可以随时从备份恢复到新的 AlloyDB 集群,该集群包含备份创建时原始集群中的所有数据。
如需了解详情,请参阅备份简介。
作为灾难恢复的进一步方法,您可以通过在不同的 Google Cloud区域中创建次要集群来实现跨区域复制。AlloyDB 会将数据从指定的主集群异步流式传输到其每个次要集群。您可以根据需要将次要集群提升为包含主实例和读取池实例的功能齐全的 AlloyDB 集群。
如需了解详情,请参阅跨区域复制简介。
安全性和访问权限控制
您可以将集群配置为需要连接到安全的 AlloyDB Auth 代理,该代理使用 Google Cloud Identity Access and Management (IAM) 进行访问权限控制。如需了解详情,请参阅授权。
AlloyDB 使用标准 PostgreSQL 用户角色系统进行身份验证,并引入了一些特定于 AlloyDB 的额外角色。如需了解详情,请参阅管理 AlloyDB 用户角色。
加密
默认情况下,AlloyDB 使用 Google 的加密方法保护所有静态数据。如果您需要使用您提供的密钥对数据进行加密,则可以在创建集群时指定客户管理的加密密钥 (CMEK)。然后,AlloyDB 使用 CMEK 密钥加密写入该集群的所有数据。
CMEK 也适用于备份。您可以在创建按需备份、配置备份时间表或从备份恢复时指定 CMEK 密钥。
如需了解详情,请参阅 CMEK 简介。
无中断维护
AlloyDB 维护操作旨在最大限度地减少对数据库的影响。主实例和辅助实例的停机时间不到一秒,而读取池会保持连续可用,不会出现停机。为此,我们会准备替换服务器,并在准备就绪时快速将其与正在使用的服务器进行切换。在此过程中,与数据库的所有有效连接都会暂时中断。在此过程中,您可以继续正常使用数据库。
虽然此替换流程可确保尽可能缩短停机时间,但整个操作可能需要几分钟时间,如 Google Cloud 控制台和 Google Cloud CLI 中所示。
这些维护操作包括 Google 运行的定期维护任务,以及您手动执行的任务,例如标志配置和实例调整大小。如果您想立即应用任何更新(即使这意味着停机时间更长),请使用 FORCE_APPLY
数据库标志。
扩展程序支持
AlloyDB 支持多种热门 PostgreSQL 扩展程序。如需查看完整列表,请参阅支持的数据库扩展。
自托管替代方案:AlloyDB Omni
作为在 Google Cloud中运行 AlloyDB 的替代方案,Google 提供了 AlloyDB Omni。借助这款精简版可下载 AlloyDB,您可以在自己的 Linux 计算环境(无论位于何处)上运行其强大的数据库引擎。
如需了解详情,请参阅 AlloyDB Omni 简介。