高可用性是 Azure Database for MySQL 的一项关键功能,旨在最大程度地减少停机时间,并确保即使在计划内维护或意外中断期间应用程序仍可访问。 本文介绍了有关高可用性(HA)选项、计费、故障转移过程、性能影响和最佳做法的常见问题,以帮助为 Azure 上的 MySQL 工作负荷做出明智的决策。
支持同区域与区域冗余 HA 的灵活服务器有哪些 SLA?
Azure Database for MySQL 灵活服务器的 SLA 信息可在 Azure Database for MySQL 的 SLA 中找到。
如何为高可用(HA)服务器计费?
使用 HA 启用的服务器具有主副本和次要副本。 次要副本可以位于同一区域或区域冗余。 对于主副本和辅助副本,你对预配的计算和存储收费。 例如,如果主副本具有 4 个 vCore 的计算和 512 GB 的预配存储,则辅助副本有 4 个 vCore 和 512 GB 的预配存储。
区域冗余 HA 服务器针对 8 个 vCore 和 1,024 GB 的存储计费。 根据备份存储卷,可能还会对备份存储计费。
是否可以使用备用副本执行读取或写入作?
备用服务器不可用于读取或写入操作。 备用服务器处于被动待机状态,可实现快速故障转移。
故障转移发生时是否会丢失数据?
即使在主服务器不可用时,也可访问 ZRS 中的日志。 这种可用性有助于确保数据不会丢失。 激活备用副本并应用二进制日志后,它将扮演主服务器的角色。
是否需要在故障转移后执行任何作?
故障转移从客户端应用程序完全透明。 无需执行任何作。 应用程序应只对其连接使用重试逻辑。
如果没有为备用副本选择特定区域,会发生什么情况? 以后是否可以更改区域?
如果未选择区域,则会随机选择一个区域。 它是用于主服务器的服务器。 若要稍后更改区域,可以在“高可用性”窗格中将“高可用性”设置为“已禁用”,然后将其设置回区域冗余并选择区域。
主副本和备用副本之间的复制是否同步?
主服务器和备用服务器之间的复制类似于 MySQL 中的 半同步模式 。 提交事务时,它不一定提交到备用服务器。 但是,当主数据库不可用时,备用服务器会复制主副本中的所有数据更改,以确保不会丢失数据。
对于所有计划外故障,是否故障转移到备用副本?
如果数据库崩溃或节点故障,则会在同一节点上重启灵活服务器 VM。 同时,将触发自动故障转移。 如果在故障转移完成之前灵活服务器 VM 重启成功,则会取消故障转移作。 确定要用作主副本的服务器取决于首先完成的进程。
使用 HA 时性能是否有影响?
对于区域冗余 HA,尽管对跨可用性区域的读取工作负荷没有重大性能影响,但写入查询延迟可能会下降高达 40%。 写入延迟的增加是由于跨可用性区域进行同步复制。 与同一区域 HA 相比,写入延迟影响是区域冗余 HA 的两倍。 对于同一区域 HA,由于主副本和备用副本位于同一区域,因此复制延迟,因此同步写入延迟较低。
总之,如果与可用性相比,写入延迟对可用性更为重要,则可能需要选择同一区域 HA,但如果数据的可用性和复原能力因写入延迟下降而更为重要,则必须选择区域冗余 HA。 若要测量 HA 设置中延迟下降的准确影响,建议对工作负荷执行性能测试,以便做出明智的决策。
如何维护 HA 服务器?
计划内事件(例如,计算和次要版本升级的缩放)首先发生在原始备用实例上,然后触发计划的故障转移作,然后在原始主实例上运行。 可以像灵活服务器一样为 HA 服务器设置 计划的维护时段 。 停机时间量与禁用 HA 时 Azure Database for MySQL 灵活服务器实例的停机时间相同。
是否可以对 HA 服务器执行时间点还原(PITR) ?
可以为已启用 HA 的 Azure Database for MySQL 灵活服务器实例执行 PITR,以便为禁用 HA 的新 Azure Database for MySQL 灵活服务器实例执行 PITR 。 如果源服务器是使用区域冗余 HA 创建的,则可以稍后在还原的服务器上启用区域冗余 HA 或同区域 HA。 如果源服务器是使用同一区域 HA 创建的,则只能在还原的服务器上启用同一区域 HA。
创建服务器后,是否可以在服务器上启用 HA?
必须在创建服务器期间启用区域冗余 HA。 可以在创建服务器后启用同一区域 HA,但在继续作之前,请确保服务器参数enforce_gtid_consistency和gtid_mode。ON
创建服务器后是否可以为服务器禁用 HA?
创建后,可以在服务器上禁用 HA。 计费会立即停止。
如何缓解停机时间?
即使未使用 HA,也需要能够减轻应用程序的停机时间。 可以在计划维护时段期间执行服务停机时间,例如计划修补程序、次要版本升级或客户启动的作,例如计算缩放。 若要减轻对 Azure 发起的维护任务的应用程序影响,可以在一周中的一天安排这些任务,并将对应用程序的影响降到最低。
是否可以对已启用 HA 的服务器使用只读副本?
是的,HA 服务器支持只读副本。
是否可以对 HA 服务器使用数据传入复制?
仅通过基于 GTID 的复制提供对启用了高可用性(HA)的服务器的数据传入复制的支持。
使用 GTID 进行复制的存储过程按名称 mysql.az_replication_with_gtid
在所有已启用 HA 的服务器上可用。
为了减少停机时间,是否可以在服务器重启或纵向扩展或缩减期间故障转移到备用服务器?
目前,Azure Database for MySQL 灵活服务器已利用计划内故障转移来优化 HA作,包括纵向扩展/缩减和计划内维护,以帮助减少停机时间。
启动此类作后,它将首先在原始备用实例上运行,然后触发计划的故障转移作,然后在原始主实例上运行。
是否可以更改服务器的可用性模式(区域冗余 HA/同一区域) **
如果创建启用了区域冗余 HA 模式的服务器,则可以从区域冗余 HA 更改为同一区域,反之亦然。
若要更改可用性模式,可以在“高可用性”窗格中将“高可用性”设置为“已禁用”,然后将其重新设置为“区域冗余”或“同一区域”,然后选择“高可用性模式”。