Azure Database for MySQL 简介

已完成

Azure Database for MySQL 可部署为灵活服务器(预览版),以在 Azure 上托管组织的 MySQL 数据库。 它是一种完全托管的数据库即服务,可处理任务关键型工作负载,并提供可预测的性能和动态缩放功能。

作为在运行和管理本地 MySQL 安装方面具有多年经验的数据库开发人员,你需要了解 Azure Database for MySQL 支持和缩放其功能的方式。

在本单元中,你将了解 Azure Database for PostgreSQL 的定价、版本支持、复制和缩放选项。

了解 Azure Database for MySQL 的优势

Azure Database for MySQL 预配为 Azure Database for MySQL 服务器。 Azure Database for MySQL 服务器相当于本地 MySQL 服务器,它提供一个中心点来管理多个 MySQL 数据库。

若要创建 Azure Database for MySQL 数据库,必须首先预配 Azure Database for MySQL 服务器。 Azure Database for MySQL 服务器是一个或多个数据库的父级,它为数据库提供命名空间。 如果删除服务器,将删除它所包含的所有数据库。

Azure Database for MySQL 服务器提供了哪些功能?

Azure Database for MySQL 服务提供无需额外成本的高可用性和可按需实现的可伸缩性。 只需为所用的部分付费。 提供自动备份和时间点恢复。

服务器提供连接安全性来强制实施防火墙规则,可能(可选)需要 SSL 连接。 借助众多服务器参数,可配置服务器设置,例如锁定模式、最大连接数和超时。 对标记为“动态”的参数所做的更改会立即生效。 静态参数要求重启服务器。 使用门户中的概述页面上的“重启”按钮来重启服务器。

Azure Database for MySQL 服务器包含监视功能,用于添加警报以及查看指标和日志。

定价层

定价层支持各种性能和容量,范围涵盖 1-64 个 vCore 和 5 GB 至 4 TB 的存储空间。 基本定价层适用于轻型计算工作负载,最多支持两个 vCore(每个内核的内存为 2 GB)。 常规用途定价层将适用于大多数业务工作负载,支持 2 到 64 个 vCore(每个内核的内存为 5 GB)。 内存优化定价层支持 2 到 32 个 vCore,每个 vCore 有 10 GB 的内存,该定价层适用于高性能工作负载(包括实时数据分析)。 尽管可在常规用途定价层和内存优化定价层之间切换,并且只需几秒即可更改 vCore 数或存储空间,但无法移到基本定价层,也无法更改为不是基本定价层。

Image showing the pricing tiers in the Azure portal

存在连接限制,具体取决于定价层和 vCore 数量。 有关详细信息,请参阅 Azure Database for MySQL 中的限制

版本控制和升级

Azure Database for MySQL 支持版本 5.6(包括 bug 修复版本 5.6.42)、5.7(包括 bug 修复版本 5.7.24)以及 8.0(包括 bug 修复版本 8.0.15)。

注意

网关将连接重定向到服务器实例。 MySQL 客户端将显示网关的版本,而不是服务器实例的版本。 若要查看服务器实例的版本,请使用 SELECT VERSION(); 命令。

会自动应用 bug 修复版本,但不支持版本升级。 若要从一个版本升级到另一个版本,应执行转储和还原。

可伸缩性

如前所述,无法移到基本定价层,也无法更改为不是基本定价层。 但是,可更改 vCore 数量、硬件生成、存储卷和备份保持期。 还可在常规用途定价层和内存优化定价层之间切换。

请注意,存储只会增加,不会减少,可将其设置为自动增加。 如果启用了自动增加,对于存储小于 100 GB 的服务器,当可用存储小于 1 GB 时,存储会增加 5 GB 或存储卷会增加 10%(以较大者为准)。 对于存储超过 100 GB 的服务器,当可用存储小于 5% 时,存储会增加 5%。

高可用性

Azure Database for MySQL 包含受到强大财力支撑的服务级别协议 (SLA),该协议保证可用性达 99.99%。 如果硬件失败或进行服务部署,将自动创建一个新节点,并将存储附加到此节点。 故障转移将在几十秒内完成。

如果 Azure Database for MySQL 服务器实例纵向扩展或纵向缩减,会发生类似的过程,数据存储会附加到新的实例。 如果发生故障转移,发生纵向扩展或纵向缩减,或者客户端与 Azure 之间的 Internet 流量发生中断,那么客户端上可能会出现暂时性连接错误。 应用程序中一定要有重试逻辑。 进行故障转移时,网关会将流量定向到新节点,无需在客户端上进行任何配置。

若要了解如何处理暂时性错误,请参阅处理 Azure Database for MySQL 的暂时性连接错误

将数据复制到 Azure Database for MySQL

数据传入复制

数据传入复制使用 MySQL 的原生复制功能将外部 MySQL 服务器中的数据复制到 Azure Database for MySQL。 如果要使用现有的本地 MySQL 实例和基于 Azure 的副本预配混合环境,则此功能非常有用。 此方案向全球分布式系统中的用户提供本地数据。 还可使用数据传入复制从其他云提供商托管的虚拟机或 MySQL 数据库服务中复制数据。

数据传入复制的注意事项

下面是数据传入复制的一些注意事项:

  • 主服务器和副本服务器的版本必须相同,并且至少为 5.6 版本。
  • 主服务器和副本服务器应使用 InnoDB 引擎。
  • 每个表都必须有一个主键。
  • Azure Database for MySQL 服务器必须具有一个常规用途定价层或内存优化定价层。
  • 你应有权在主服务器上创建用户和配置二进制日志记录。
  • 不会复制 mysql 系统数据库。 帐户和权限不会从主服务器复制到副本服务器,而应手动创建。

数据传入复制的配置步骤

配置数据传入复制有多个步骤:

  • 创建要用作副本服务器主机的 Azure Database for MySQL 服务器,并创建任何必要的用户帐户和特权。
  • 在主服务器上配置复制。
  • 转储并还原主服务器。
  • 使用数据传入复制存储过程配置目标服务器。

有关详细信息,请参阅如何配置 Azure Database for MySQL 的数据传入复制

只读副本

只读副本使用原生 MySQL 复制技术来创建 Azure Database for MySQL 服务器的异步副本实例。 副本服务器是只读的,每个主服务器最多可以有 5 个副本。 对于每个只读副本,将根据它使用的 vCore 和存储计算每月费用。

只读副本的用途

报告服务器

通过创建主服务器的只读副本,你可将所有报告、BI 和分析工作负载定向到该副本。 这会删除主服务器上的工作负载,并在主服务器运行其写入密集型工作负载时减少冲突。

使数据更靠近用户

创建跨区域副本,来使数据更靠近用户并提高其读取速度。 跨区域副本可以位于通用副本区域中,也可以位于主服务器的配对区域中。 创建副本服务器时,将列出可用区域。

Image showing replica regions

配置只读副本

在 Azure 门户中配置只读副本:

Image showing replication setting in the Azure portal

然后,指定副本的名称和区域:

Image showing replication in the Azure portal

注意

只读副本在基本定价层中不可用。

有关只读副本的详细信息,请参阅 Azure Database for MySQL 中的只读副本

监视和管理

Azure Database for MySQL 提供各种的监视工具,有助于你优化服务器、了解事件并主动响应指标。 你还可使用熟悉的 MySQL 管理工具(如最新版本的 MySQL Workbench、PHPMyAdmin 和 Navicat)来管理和监视 Azure Database for MySQL 服务器:

Image showing the MySQL Workbench tool connected to Azure Database for MySQL

用于监视 Azure Database for MySQL 的 Azure 工具

Azure 门户中提供的用于管理和监视 Azure Database for MySQL 的工具包括:

  • Azure 指标。 指标每分钟提供一次数值数据,并存储 30 天。 可使用各种指标来监视服务器,你还可以配置警报来响应指标。

    Image showing Azure metrics

    有关详细信息,请参阅 Azure Monitor 数据平台

  • 服务器和审核日志。 启用服务器日志可监视速度缓慢的查询,并为服务器提供审核日志记录。 通过 Azure 诊断日志,可在 SQL Database for MySQL 外部使用服务器日志。

    Image showing Azure server logs

    有关详细信息,请参阅 Azure Database for MySQL 中速度缓慢的查询的日志。 审核日志是一项预览功能,可提供审核日志记录来踪数据库活动。 若要启用审核日志记录,请将 udit_log_enabled 数设置为“开”。 有关审核日志的详细信息,请参阅 Azure Database for MySQL 中的审核日志

  • 查询存储。 这用于跟踪服务器在一段时间内的性能并提供故障排除信息。 查询存储保留查询历史记录和运行时统计信息,以便你可以识别资源密集型查询或长时间运行的查询。 若要启用查询存储,请将 query_store_capture_mode 服务器参数设置为“全部”:Image showing Query Store capture mode

    若要查看有关查询的查询存储数据,请运行以下查询:

    SELECT * FROM mysql.query_store;
    

    若要查看有关等待统计信息的数据,请运行以下查询:

    SELECT * FROM mysql.query_store_wait_stats;
    

    注意

    查询存储是一项预览功能,不可在基本定价层中使用。

    有关查询存储的详细信息,请参阅使用查询存储监视 Azure Database for MySQL 性能

  • Query Performance Insight。 Query Performance Insight 以可视化效果显示查询存储中的数据,使你能够确定影响性能的查询。 Query Performance Insight 位于 Azure 门户中 Azure Database for MySQL 的“智能性能”部分。

    注意

    Query Performance Insight 是一项预览功能,不可在基本定价层中使用。

    有关 Query Performance Insight 的详细信息,请参阅 Azure Database for MySQL 中的 Query Performance Insight

  • 性能建议。 性能建议使用来自查询存储的数据来分析工作负载,并将其与数据库特征结合,推荐新索引以提高性能。 性能建议位于 Azure 门户中 Azure Database for MySQL 的“智能性能”部分。

    注意

    性能建议是一项预览功能,不可在基本定价层中使用。

    有关性能建议的详细信息,请参阅 Azure Database for MySQL 中的性能建议

客户端连接性

MySQL 驱动程序

Azure Database for MySQL 使用 MySQL 社区版,与各种驱动程序兼容,也支持多种编程语言。 Azure 门户中提供的连接字符串:

Image showing connection strings

有关 MySQL 驱动程序的详细信息,请参阅与 Azure Database for MySQL 兼容的 MySQL 驱动程序和管理工具

配置防火墙

要配置防火墙,最简单的方法是在 Azure 门户中使用服务的“连接安全性”设置。 为每个客户端 IP 地址范围添加规则。 还可使用此页面强制执行到服务的 SSL 连接。

Image showing the firewall configuration for Azure Database for PostgreSQL

单击工具栏中的“添加客户端 IP”,添加桌面计算机的 IP 地址。

如果已配置只读副本,必须向每个副本添加防火墙规则,来使其可供客户端访问。

暂时性连接错误

通过 Internet 连接到数据库时,暂时性连接错误是不可避免的,应由客户端应用程序进行处理。

有关暂时性连接错误的信息,请参阅处理 Azure Database for MySQL 的暂时性连接错误

Azure Database for MySQL 不支持的 MySQL 功能

虽然 MySQL 中的大部分功能可在 Azure Database for MySQL 中使用,但某些功能不受支持。 应查看这些功能,以确保减少在迁移时可能出现的任何问题。

存储引擎

Azure Database for MySQL 支持 InnoDB 和 MEMORY 存储引擎。 InnoDB 是 MySQL 的默认存储引擎,可在高性能和高可靠性之间保持平衡。 除非另行指定,否则 MySQL 中的所有新表都将使用 InnoDB 存储引擎。

有关 InnoDB 存储引擎的详细信息,请参阅 InnoDB 简介

若要将数据存储在内存中,可使用 MEMORY 存储引擎。 这些数据面临任何形式的故障或中断的风险,MEMORY 存储引擎只应用作一种临时的高性能存储。

有关 MEMORY 存储引擎的详细信息,请参阅 MEMORY 存储引擎

Azure Database for MySQL 不支持 MyISAM、BLACKHOLE、ARCHIVE 和 FEDERATED 存储引擎。 应将 MyISAM 数据转换为 InnoDB 存储引擎。 BLACKHOLE、ARCHIVE 和 FEDERATED 存储引擎具有专家角色,不能用作典型的数据存储。

特权和角色

由于许多服务器设置和参数可能会破坏事务规则并降低性能,因此不公开 DBA 角色。 出于类似的原因,SUPER 特权受到限制,因此使用 SUPER 特权的 DEFINER 子句也受到限制。

还原

Azure Database for MySQL 中的两个还原功能的作用不同:

  • 时间点还原会创建一个新的服务器,其配置与它所基于的服务器的配置相同。
  • 无法还原已删除的服务器。