发布于: Oct 30, 2022
如何实现 Amazon RDS 云关系型数据库可扩展性监控是许多人关注的问题。在全局情况下,您可以将对各个分片进行比较,从而验证系统当中是否存在热点。以此为背景,关注单一分片中的指标(例如系统资源使用量或数据库吞吐量)往往比较重要。此外,大家还应为监控数据设置适当的保留期。最后,您可以使用历史信息来分析系统变化趋势并规划容量,保证系统能够持续适应新的需求。
作为一项托管服务,Amazon RDS 会自动收集监控数据并将其发布至 Amazon CloudWatch。CloudWatch 可提供数据库与系统层级的统一指标视图。其中一部分指标在所有数据库间通用,也有一些只适用于特定某款数据库引擎。关于监控指标的完整列表,请参阅 Amazon RDS 与 Amazon Aurora 说明文档。
这里,建议大家使用能够监控整体系统资源使用情况的指标,例如 CPUUtilization、 FreeableMemory、 ReadIOPS、 WriteIOPS 以及 FreeStorageSpace。这些指标能帮助我们了解数据库分片上的资源使用情况是否与容量范围相符,以及还有多少增长空间。系统资源消耗量,是证明分片数据库架构是否需要进一步扩展/合并的一大重要依据。
下图所示为 CloudWatch 仪表板,此仪表板可为用户提供对分片数据库架构的良好可见性。它将来自所有数据库分片的实时与历史指标数据汇总到统一的视图当中。
当某一数据库分片具有较高的系统资源使用率并需要进行扩容时,我们可以选择纵向与横向两种扩展途径。Amazon RDS 提供便捷的纵向扩展选项,您可以借此为数据库实例类添加更强的 CPU 与更大的 RAM 容量,或者调整数据库实例存储以获取更高的存储空间与 IOPS 水平。根据您所选择的不同数据库引擎或特定数据库版本,可用的实例类选项也将有所区别。建议大家通过 Amazon Management Console 对了解这些具体可用选项。
如果您选择使用 Amazon RDS for MySQL 或者 PostgreSQL 以构建数据库分片,还可使用另一个扩展选项:迁移至 Amazon Aurora 数据库集群。Aurora 数据库集群能够在集群存储卷上容纳多个数据库实例,借此提供比 Amazon RDS 数据库实例更强的性能与 IOPS 容量。Amazon RDS 还提供一键式 Aurora 读取副本创建功能,大家可以借此设置复制流程,轻松将数据从 Amazon RDS for MySQL 或 PostgreSQL 数据库实例迁移至 Aurora 读取副本。在数据迁移完成之后,您还可以将 Aurora 读取副本提升为独立的 Aurora 数据库集群。
所谓重新分片,就是对数据库分片进行横向扩展,也称再次分片。从广义角度看,重新分片还可以指所有对分片数据库架构进行分片数量调整的过程。此类过程包括添加新的分片,将一个分片拆分成多个分片或者将多个分片合并为一个分片。虽然各自诉求不同,但这些过程在本质上执行的是相同类型的操作:将现有数据从一个分片迁移至另一个分片。对于重新分片来说,如何在需要实时访问并更改数据的生产数据库中以最短停机时间实现数据迁移,一直是个令人头痛的问题。
Amazon RDS 致力于降低重新分片的操作难度!在 Amazon RDS for MySQL、MariaDB 以及 PostgreSQL 中,Amazon RDS 提供一键式横向扩展选项(读取副本),可将一个独立数据库拆分为多个新的数据库。下图所示为重新分片示例工作流,其中使用读取副本作为数据复制手段,实现了数据在不同数据库之间的迁移。
- 创建读取副本,用于连续从主数据库处复制数据。
- 主数据库将推迟写入活动,确保读取副本能够成功同步并被提升为新的独立数据库。在此期间,应用层内的映射与路由逻辑会将主数据库上多个数据分区的状态更新为只读。
- 修改数据映射与路由逻辑,将连接路由至新数据库。
如果大家选择使用 Amazon Aurora 数据库集群以构建数据库分片,则其读取副本将与主实例共享存储卷。这意味着我们无法使用其在 Aurora 集群之间复制数据;但与之对应,Amazon RDS 提供数据库克隆功能,可利用来自源数据库的数据创建出新的 Amazon Aurora 数据库集群。对于 Aurora MySQL 数据库集群,您还可以设置 MySQL 复制选项,借此将数据快速复制到另一个新的 Aurora MySQL 数据库集群当中。
除了使用现有数据库技术进行数据复制之外,大家也可以利用其他工具在数据库分片之间迁移数据,从而实现重新分片。此类工具包括 Amazon Database Migration Service (Amazon DMS)或者由用户定义的数据提取流程。下图所示为基于工具的重新分片工作流示例,此工作流每次对一个数据分区执行迁移操作。
- 数据迁移工具将数据分区从一个数据库分片复制到另一个数据库分片。应用层内的映射与路由逻辑将数据分区的状态更新为只读。此后,数据迁移工具即可在两个数据库分片之间执行数据同步。
- 在数据同步完成后,应用层内的数据映射与路由逻辑将更新数据分区的映射与状态,使其在新的数据库分片上生效。
基于工具的重新分片方法更为灵活,因为每个数据分区都可以独立迁移。在迁移过程中,对应数据分区将进入只读模式,意味着应用程序仍然可以读取其数据。其他数据应用则仍然可以读取及写入,并保证整个分片数据库架构的持续可用性。
基于数据库的重新分片方法在进行数据库拆分时,会对数据库分片上多个数据分区的写入操作带来停机时间。在新数据库上线后,其中将包含来自原始数据库的所有数据分区(即使某些数据分区并不会实际使用)。因此,您需要单独消除掉其中的重复数据。
相关文章