Azure Database for MariaDB 中的高可用性

重要

Azure Database for MariaDB 已列入停用计划。 强烈建议迁移到 Azure Database for MySQL。 若要详细了解如何迁移到 Azure Database for MySQL,请参阅 Azure Database for MariaDB 发生了什么情况?

Azure Database for MariaDB 服务适合运行对正常运行时间要求很高的关键数据库。 它在以下时期提供高可用性:

  • 计划内事件,例如用户启动的规模计算操作。
  • 计划外事件,例如基础硬件、软件或网络故障。

Azure Database for MariaDB 针对运行时间提供了以经济补偿为保障的服务级别协议。 由于该服务是基于 Azure 体系结构构建的,因此无需配置任何其他组件即可利用其功能实现高可用性、冗余和复原能力。

Azure Database for MariaDB 中的审核日志

组件 说明
MariaDB 数据库服务器 Azure Database for MariaDB 为数据库服务器提供安全性、隔离、资源保护和快速重启功能。 这些功能有助于在发生中断后(几秒钟内)执行缩放和数据库服务器恢复等操作。
数据库服务器中的数据修改通常发生在数据库事务的上下文中。 所有数据库更改都以预写日志(ib_log 文件)的形式同步记录在 Azure 存储上,该存储附加到数据库服务器。 在数据库检查点过程中,数据库服务器内存中的数据页也会刷新到存储中。
远程存储 所有 MariaDB 物理数据文件和日志文件都存储在 Azure 存储中,该存储可在一个区域中存储数据的三个副本,以提供数据冗余、可用性和可靠性。 存储层独立于数据库服务器。 它可以在几秒内从发生故障的数据库服务器分离并重新附加到新的数据库服务器。
Azure 存储还会持续监视是否存在任何存储故障。 如果检测到块损坏,它会通过实例化新的存储副本来自动修复问题。
网关 网关充当数据库代理,将所有客户端连接路由到数据库服务器。

缓解计划外停机

意外的故障(包括基础硬件故障、网络问题和软件 bug)可能会导致计划外停机。 如果数据库服务器意外关闭,则会在数秒内自动预配一个新的数据库服务器。 远程存储会自动附加到新的数据库服务器。

MariaDB 引擎使用预写日志和数据库文件执行恢复操作,并打开数据库服务器以允许客户端进行连接。 未提交的事务丢失,应用程序必须重试它们。

虽然无法避免计划外停机,但 Azure Database for MariaDB 可以无需人工干预,通过在数据库服务器和存储层上自动执行恢复操作来减轻影响。

Azure Database for MariaDB 中的高可用性的关系图。

计划外停机:故障场景和服务恢复

下面介绍了两个故障场景以及 Azure Database for MariaDB 如何自动恢复:

方案 自动恢复
数据库服务器故障 如果数据库服务器由于基础硬件故障而关闭,则 Azure Database for MariaDB 会删除活动连接并取消任何正在进行的事务。 该服务会自动部署新的数据库服务器,并将远程数据存储附加到新的数据库服务器。 在数据库恢复完成后,客户端可以通过网关连接到新的数据库服务器。
所构建的使用 MariaDB 数据库的应用程序需要能够检测并重试断开的连接和失败的事务。 当应用程序重试连接时,网关会将连接透明地重定向到新创建的数据库服务器。
存储故障 与存储相关的问题(如磁盘故障或物理块损坏)不会影响应用程序。 由于数据分三份副本存储,因此未发生故障的存储将提供数据副本。 Azure Database for MariaDB 会自动更正块损坏。 如果数据副本丢失,该服务会自动创建数据的新副本。

下面是需要用户执行操作来进行恢复的故障场景:

场景 恢复计划
区域故障 区域故障非常少见。 但是,如果需要在发生区域故障时获得保护,则可在其他区域中配置一个或多个用于灾难恢复的只读副本。 请参阅此文,详细了解如何创建和管理只读副本。 如果发生区域级故障,可以手动将其他区域上配置的只读副本提升为生产数据库服务器。
逻辑/用户错误 若要从用户错误(如意外删除表或未正确更新数据)中恢复,则需要执行时间点还原。 此操作将还原和恢复刚好在发生错误前的数据。
如果只需还原部分数据库或特定的表,而不是还原数据库服务器中的所有数据库,则可在新实例中还原数据库服务器,通过 mysqldump 导出表,然后在数据库中还原 这些表。

总结

Azure Database for MariaDB 具有固有的高可用性功能,可帮助保护数据库免受常见中断的影响。 它提供了数据库服务器快速重启功能、冗余存储和网关的高效路由。 为了进一步进行数据保护,你可以将备份配置为异地复制的备份,并在其他区域中部署只读副本。

后续步骤