Azure Database for MySQL 的工作原理
在本单元中,你将从 Azure Database for MySQL 的体系结构开始,了解该服务的工作原理。 你还将了解该服务如何提供高可用性、备份功能和缩放以满足工作负载的需求。
Azure Database for MySQL 体系结构
下图描述了 Azure Database for MySQL 灵活服务器实例的体系结构。
- MySQL 实例在 Azure VM 上运行。
- 数据和日志存储在 Azure 高级存储中。
- 数据将在本地冗余存储中复制三次,以实现备份和复原。 该服务还提供用于配置区域冗余或异地冗余存储备份的选项。
- 此外,你还可以选择将连接到 MySQL 灵活服务器的各种客户端应用共置在同一可用性区域内。
你可以进一步选择同区域或区域冗余高可用性,这样会自动预配和维护备用副本。
高可用性的工作原理
对于 Azure Database for MySQL 灵活服务器,在单个可用性区域中的托管服务器发生故障后,将执行以下流程:
- Azure 预配新的虚拟机 (VM)。
- Azure 将存储和数据文件映射到新预配的 VM。
- MySQL 数据库引擎已联机。
- 客户端应用程序重新连接到新的 MySQL 实例。
注意
如果你跨区域预配了高可用性,则热备用服务器在同一 Azure 区域的另一个可用性区域中得到维护。 此服务器是主服务器的完全同步副本。 发生主服务器故障时,热备用服务器可以快速接管并尽量减少中断,从而保持服务可用性。
备份的工作原理
可以使用备份将服务器还原到保持期(为 35 天或长期保留情况下最长 10 年,预览版)内的任何时间点。
缩放的工作原理
Azure Database for MySQL 中的缩放涉及根据应用程序的需求调整计算资源,这可能会根据用户需求、所处理操作的复杂性或业务增长等因素而波动。 这种灵活性对于保持最佳性能和成本效益至关重要。
缩放类型
- 垂直缩放(纵向扩展/纵向缩减)
- 计算缩放:这是指更改 MySQL 灵活服务器的计算层。 Azure 提供多个计算层,每个层旨在满足不同类型的工作负载:
- 可突发:适用于存在 CPU 使用率间歇性爆发但不需要持续完整 CPU 性能的环境。
- 常规用途:专为各种应用程序设计,提供计算、内存和 I/O 资源的平衡。
- 业务关键:凭借更强大的 CPU 和更快的 I/O,为数据库提供最佳性能,适用于高事务、低延迟工作负载。
- 内存和 CPU 分配:根据所选的层,可以缩放 vCore 数量和数据库可用的 RAM 量,这直接影响处理更大或更复杂的查询和更高数量的并发连接的能力。
- 计算缩放:这是指更改 MySQL 灵活服务器的计算层。 Azure 提供多个计算层,每个层旨在满足不同类型的工作负载:
- 水平缩放
- Azure Database for MySQL 可以通过添加只读副本进行水平扩展,以在多个服务器中分发读取流量,从而在提高读取性能的同时,使主服务器可始终用于写入。 水平缩放允许数据库处理更多查询负载,以提高应用程序响应能力。
- 存储缩放
- 动态存储缩放:使用 Azure Database for MySQL 可以增加存储容量,避免停机时间。 可以从较小的分配开始,并随数据的增长进行纵向扩展。
- 自动增长功能:此功能会在达到容量限制之前自动增加存储大小,从而防止与存储约束相关的任何中断。
自动缩放 IOPS
自动缩放 IOPS(每秒输入/输出操作数)是一项可根据当前工作负载动态调整 I/O 吞吐量的功能。 这对于不可预知或容易出现高峰的工作负载模式特别有用,因为它可确保数据库能够处理负载的突然增加,而无需手动干预。
- 基于负载的 IOPS 缩放:当工作负载增加且需要更多 I/O 吞吐量时,自动缩放功能会自动将 IOPS 限制增加到所选计算层中允许的最大值。 相反,可以在低活动量期间减少 IOPS,以最大程度地降低成本。
- 成本效益:通过根据实际使用情况自动调整 IOPS,你只需为使用的 IOPS 付费,而不是过度预配资源来处理只会偶尔出现的峰值负载。
有关缩放的最佳做法
若要有效缩放 Azure Database for MySQL,请使用 Azure Monitor 监视性能指标、设置关键警报、通过查看使用模式来规划未来增长,以及在非高峰时段测试可伸缩性,以确保负载增加时的平稳性能。
通过了解和利用这些缩放机制,可以确保 Azure Database for MySQL 灵活服务器始终高效运行,从而适应当前和未来的业务需求。
配置和优化引擎行为
若要在 Azure Database for MySQL 中轻松配置和自定义服务器变量和参数,可以使用 Azure 门户、Azure CLI 或 REST API 调整查询缓存大小、连接超时和存储引擎首选项等设置,确保特定工作负载的最佳性能和行为。
接下来,考虑 Azure Database for MySQL 是否能够满足你的组织、其应用和数据库工作负载的要求。