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

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

缓解计划内停机

Azure Database for MariaDB 的体系结构在计划内停机操作期间提供高可用性。

Diagram of elastic scaling in Azure Database for MariaDB.

下面是计划内维护的一些方案:

方案 说明
计算纵向扩展或缩减 执行计算纵向扩展或缩减操作时,Azure Database for MariaDB 使用缩放的计算配置预配新的数据库服务器。 在旧数据库服务器上,该服务允许活动检查点完成、清空客户端连接并取消任何未提交的事务。 然后,该服务关闭旧的数据库服务器。 它将存储与旧数据库服务器分离,并将存储附加到新的数据库服务器。 当客户端应用程序重试连接或尝试建立新连接时,网关会将连接请求定向到新的数据库服务器。
纵向扩展存储 纵向扩展存储是一项联机操作,不会中断数据库服务器。
新软件部署 (Azure) 在服务的计划内维护过程中,会自动推出新功能或 bug 修复。 有关详细信息,请参阅文档和检查门户
次要版本升级 Azure Database for MariaDB 会自动将数据库服务器修补到 Azure 确定的次要版本。 自动修补作为服务计划内维护的一部分进行。 在几秒钟内,它会产生短暂的停机时间,并且数据库服务器会自动重启新的次要版本。 有关详细信息,请参阅文档和检查门户

缓解计划外停机

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

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

尽管无法避免计划外停机,但 Azure Database for MariaDB 通过在数据库服务器和存储层上自动执行恢复操作来缓解故障,而无需人工干预。

Diagram of high availability in Azure Database for MariaDB.

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

下面是两种故障方案,以及 Azure Database for MariaDB 如何自动恢复:

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

下面是需要用户操作才能恢复的失败方案:

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

总结

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

后续步骤