你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Database for MySQL 中的高可用性 (HA) 常见问题 (FAQ)

高可用性是 Azure Database for MySQL 的一项关键功能,旨在最大程度地减少停机时间,并确保即使在计划内维护或意外中断期间应用程序仍可访问。 本文介绍了有关高可用性 (HA) 选项、计费、故障转移过程、性能影响和最佳做法的常见问题,以帮助为 Azure 上的 MySQL 工作负载做出明智的决策。

启用本地冗余与区域冗余 HA 的灵活服务器,其 SLA 有何不同?

可在适用于 Azure Database for MySQL 的 SLA 中查找关于 Azure Database for MySQL 灵活服务器的 SLA 信息。

如何对高可用性 (HA) 服务器进行计费?

启用高可用性的服务器具有主要副本和次要副本。 次要副本可以位于同一区域或区域冗余。 我们将对主要副本和次要副本的预配计算和存储计费。 例如,如果主要副本有 4 个 vCore 的计算和 512 GB 的预配存储,则次要副本也会有 4 个 vCore 和 512 GB 的预配存储。

区域冗余 HA 服务器将按 8 个 vCore 和 1024 GB 存储计费。 根据备份存储卷,还可能会对备份存储计费。

是否可以将备用副本用于读取或写入操作?

备用服务器不可用于读取或写入操作。 备用服务器处于被动待机状态,可实现快速故障转移。

发生故障转移时,是否会丢失数据?

即使在主服务器不可用时,也可访问 ZRS 中的日志。 这种可用性有助于确保数据不会丢失。 激活备用副本并应用二进制日志后,它将采用主服务器的角色。

故障转移后是否需要采取任何措施?

故障转移对客户端应用程序是完全透明的。 你不必执行任何操作。 应用程序应该只对其连接使用重试逻辑。

不为备用副本选择特定区域时会发生什么情况? 以后能否更改区域?

如果未选择区域,则系统会随机选择一个区域。 但不会是用于主服务器的那个区域。 若要稍后更改区域,可以在“高可用性”窗格中将“高可用性”设置为“禁用”,然后将其重新设置为“区域冗余”并选择一个区域。

主服务器和备用副本之间的复制是否同步?

主服务器与备用服务器之间的复制类似于 MySQL 中的半同步模式。 提交事务时,不一定要将事务提交到备用服务器。 但是当主服务器不可用时,备用服务器会从主服务器复制所有数据更改,以确保没有数据丢失。

对于所有计划外故障,是否故障转移到备用副本?

如果数据库崩溃或节点发生故障,将首先将在同一节点上重启灵活服务器 VM。 同时,将触发自动故障转移。 如果在故障转移完成之前灵活服务器 VM 重启成功,则会取消故障转移操作。 确定将哪个服务器用作主要副本取决于首先完成的过程。

使用高可用性时是否会影响性能?

对于区域冗余高可用性,虽然对跨可用性区域的读取工作负载没有重大性能影响,但写入查询延迟可能会下降高达 40%。 写入延迟的增加是由于跨可用性区域进行同步复制导致的。 区域冗余高可用性中的写入延迟影响是同区域高可用性中的两倍。 对于本地冗余 HA,由于主副本和备用副本位于同一区域,因此复制延迟,因此同步写入延迟较低。

总之,如果与可用性相比,写入延迟对可用性更为重要,则可能需要选择本地冗余 HA,但如果数据的可用性和复原能力因写入延迟下降而更加重要,则必须选择区域冗余 HA。 若要评估高可用性设置中延迟下降的准确影响,建议为工作负载执行性能测试,以做出明智的决策。

高可用性服务器的维护如何发生?

调整计算规模和次要版本升级等计划事件首先在原始备用实例上发生,然后触发计划的故障转移操作,之后再对原始主实例进行操作。 可以为高可用性服务器设置定期维护时段,就像你为灵活服务器设置的那样。 停机时间与禁用高可用性时 Azure Database for MySQL 灵活服务器实例的停机时间相同。

能否对高可用性服务器执行时间点还原 (PITR)?

你可以为启用了高可用性的 Azure Database for MySQL 灵活服务器实例执行 PITR,将其还原到禁用了高可用性的新 Azure Database for MySQL 灵活服务器实例。 如果源服务器是使用区域冗余 HA 创建的,则可以稍后在还原的服务器上启用区域冗余 HA 或本地冗余 HA。 如果源服务器是使用本地冗余 HA 创建的,则只能在还原的服务器上启用本地冗余 HA。

是否可以在创建服务器后启用高可用性?

在创建服务器期间必须启用区域冗余 HA。 可以在创建服务器后启用本地冗余高可用性,但在继续之前,请确保将服务器参数enforce_gtid_consistencygtid_mode设置为ON

是否可以在创建服务器后对其禁用高可用性?

在创建服务器之后可以在服务器上禁用高可用性。 计费将立即停止。

如何减少停机时间?

即使不使用高可用性,也需要能够减少应用程序的停机时间。 可以在预定维护窗口期间执行服务停机时间(如预定补丁、次要版本升级)或客户启动的操作(如计算扩展)。 为了减轻 Azure 启动的维护任务对应用程序的影响,可以将它们安排在一周中的某一天和时间,以最大限度地减少对应用程序的影响。

是否可以将只读副本用于启用了高可用性的服务器?

可以,高可用性服务器支持只读副本。

能否将数据传入复制用于高可用性服务器?

只有通过基于 GTID 的复制,才能支持已启用高可用性 (HA) 的服务器的数据传入复制。

使用 GTID 进行复制的存储过程在所有已启用 HA 的服务器上均可用,其名称为 mysql.az_replication_with_gtid

为了减少停机时间,我可以在服务器重新启动期间或在纵向扩展或横向缩减时故障转移到备用服务器吗?

目前,Azure Database for MySQL 灵活服务器已使用计划的故障转移来优化高可用性操作(包括纵向扩展/缩减和计划内维护),以帮助减少停机时间。

当此类操作启动时,它将首先对原始备用实例进行操作,然后触发计划的故障转移操作,之后再对原始主实例进行操作。

是否可以更改服务器的可用性模式(区域冗余 HA/本地冗余) **

如果创建启用了区域冗余 HA 模式的服务器,则可以从区域冗余 HA 更改为本地冗余,反之亦然。

若要更改可用性模式,可以在“高可用性”窗格中将“高可用性”设置为“已禁用”,然后将其重新设置为“区域冗余”或“本地冗余”,然后选择“高可用性模式”。