创建高度可用的 MySQL 数据库

重要

从 Azure Stack Hub 2108 版开始,SQL 和 MySQL 资源提供程序将提供给已获得访问权限的订阅。 如果想要开始使用此功能,或者需要从之前的版本升级,请创建支持案例,我们的支持工程师将指导你完成部署或升级过程。

作为 Azure Stack Hub 操作员,你可以配置服务器虚拟机 (VM) 来托管 MySQL Server 数据库。 在 Azure Stack Hub 成功创建和管理 MySQL 群集后,订阅 MySQL 服务的用户可以轻松创建高度可用的 MySQL 数据库。

本文展示了如何使用 Azure Stack 市场项创建带复制的 MySQL 群集。 此解决方案使用多个 VM 将数据库从控制平面节点复制到多个可配置的副本。 创建后,可以将群集添加为 Azure Stack Hub MySQL 托管服务器,然后用户可以创建高度可用的 MySQL 数据库。

重要

“带复制的 MySQL”Azure Stack Marketplace 项可能不适用于所有 Azure 云订阅环境。 在尝试按照本教程的其余部分操作之前,请验证订阅中是否有市场项。

学习内容:

  • 从市场项创建 MySQL Server 群集。
  • 将 MySQL Server 群集配置为 Azure Stack Hub MySQL 托管服务器。
  • 创建高度可用的 MySQL 数据库。

将使用可用的 Azure Stack 市场项创建和配置包含 3 个 VM 的 MySQL Server 群集。

在开始之前,请确保已成功安装 MySQL Server 资源提供程序,并且 Azure Stack Marketplace 中提供以下项目:

重要

创建 MySQL 群集需要以下所有项。

  • 带复制的 MySQL:这是用于 MySQL 群集部署的 Bitnami 解决方案模板。
  • Debian 8 "Jessie":Debian 8 "Jessie" 具有由 credativ 提供的 Microsoft Azure 的向后移植内核。 Debian GNU/Linux 是最流行的 Linux 分发版之一。
  • 适用于 Linux 2.0 的自定义脚本:自定义脚本扩展是一种在预配 VM 后执行 VM 自定义任务的工具。 将此扩展添加到 VM 后,它可以从 Azure 存储下载脚本并在 VM 上运行这些脚本。 自定义脚本扩展任务也可以使用 Azure PowerShell cmdlet 和 Azure 跨平台命令行接口 (xPlat CLI) 自动完成。
  • 适用于 Linux 扩展 1.4.7 的 VM Access:VM Access 扩展使你能够重置密码、SSH 密钥或 SSH 配置,以便可以重新获得对 VM 的访问权限。 还可以使用密码或 SSH 密钥添加新用户,或使用此扩展删除用户。 此扩展面向 Linux VM。

要了解有关向 Azure Stack 市场添加项的详细信息,请参阅 Azure Stack 市场概述

部署 Linux VM 后,还需要一个 SSH 客户端(如 PuTTY)登录这些 VM。

创建 MySQL Server 群集

按照本部分中的步骤,使用带复制的 MySQL 市场项部署 MySQL Server 群集。 此模板部署在高度可用的 MySQL 群集中配置的三个 MySQL Server 实例。 默认情况下,它会创建以下资源:

  • 虚拟网络
  • 一个网络安全组
  • 一个存储帐户
  • 一个可用性集
  • 三个网络接口(每个默认 VM 一个)
  • 一个公共 IP 地址(用于主 MySQL 群集 VM)
  • 三个 Linux VM,用于托管 MySQL 群集
  1. 登录到用户门户:

    • 对于集成系统部署,门户地址将根据解决方案的区域和外部域名而有所不同。 它将采用 https://portal.<region>.<FQDN> 格式。
    • 对于 Azure Stack 开发工具包 (ASDK),门户地址为 https://portal.local.azurestack.external
  2. 如果尚未分配订阅,请从仪表板中选择“获取订阅”。 在边栏选项卡中,键入订阅的名称,然后选择产品/服务。 建议将 MySQL 群集部署保留在其自己的订阅中,以防意外删除。

  3. 选择“+创建资源”>“计算”,然后选择“带复制的 MySQL”。

    Custom template deployment in Azure Stack Hub

  4. 在“基本信息”页面上提供基本部署信息。 查看默认值并根据需要进行更改,然后选择“确定”。

    至少提供以下信息:

    • 部署名称(默认为 mymysql)。

    • 应用程序根密码。 提供 12 个字符的字母数字密码(不含特殊字符)。

    • 应用程序数据库名称(默认为 bitnami)。

    • 要创建的 MySQL 数据库副本 VM 的数量(默认为 2)。

    • 选择要使用的订阅。

    • 选择要使用的资源组或创建一个新的资源组。

    • 选择位置(版本 2107 之前 ASDK 默认为本地)。

      Deployment basics -- Create MySQL with Replication

  5. 在“环境配置”页面上,提供以下信息,然后选择“确定”:

    • 用于安全外壳 (SSH) 身份验证的密码或 SSH 公钥。 如果使用密码,则必须包含字母、数字,并且可以包含特殊字符。

    • VM 大小(默认为标准 D1 v2 VM)。

    • 数据磁盘大小(以 GB 为单位)

      Environment configuration -- Create MySQL with Replication

  6. 查看部署摘要。 或者,可以下载自定义模板和参数,然后选择“确定”。

    Summary -- Create MySQL with Replication

  7. 在“购买”页面上选择“创建”以开始部署。

    Buy page -- Create MySQL with Replication

    注意

    完成部署大约需要一小时。 在继续之前,请确保部署已完成且 MySQL 群集已完全配置。

  8. 成功完成所有部署后,查看资源组项并选择 mysqlip 公共 IP 地址项。 记录群集的公共 IP 地址和公共 IP 的完整 FQDN。

    需要将此 IP 地址提供给 Azure Stack Hub 操作员,以便他们可以使用此 MySQL 群集创建 MySQL 托管服务器。

创建网络安全组规则

默认情况下,不会为 MySQL 配置到主机 VM 的公共访问权限。 为了让 Azure Stack Hub MySQL 资源提供程序连接和管理 MySQL 群集,需要创建入站网络安全组 (NSG) 规则。

  1. 在管理门户中,转到部署 MySQL 群集时创建的资源组并选择网络安全组 (default-subnet-sg):

    Select network security group in Azure Stack Hub administrator portal

  2. 选择“入站安全规则”,并选择“添加”

    在“目标端口范围”中输入“3306”,并在“名称”和“说明”字段中提供说明

    open

  3. 选择“添加”以关闭“入站安全规则”对话框

配置对 MySQL 群集的外部访问

在将 MySQL 群集添加为 Azure Stack Hub MySQL Server 主机之前,必须启用外部访问。

  1. 使用 SSH 客户端(本示例使用 PuTTY)从可以访问公共 IP 的计算机登录主 MySQL 计算机。 主 MySQL VM 名称通常以 0 结尾,并分配有公共 IP。

    使用公网 IP,使用用户名 bitnami 和之前创建的应用程序密码(不含特殊字符)登录 VM。

    LinuxLogin

  2. 在 SSH 客户端窗口中,使用以下命令确保 bitnami 服务处于活动状态且正在运行。 出现提示时,再次提供 bitnami 密码:

    sudo service bitnami status

    Check bitnami service

  3. 创建一个远程访问用户帐户,供 Azure Stack Hub MySQL 托管服务器使用,以连接到 MySQL,然后退出 SSH 客户端。

    运行以下命令,使用之前创建的根密码以 root 身份登录 MySQL。 新建一个管理员用户,并根据环境需要替换 <用户名> 和 <密码>。 在此示例中,创建的用户名为 sqlsa,并使用强密码:

    mysql -u root -p
    create user <username>@'%' identified by '<password>';
    grant all privileges on *.* to <username>@'%' with grant option;
    flush privileges;
    

    Create admin user

  4. 记录新的 MySQL 用户信息。

    需要将此用户名和密码以及群集的公共 IP 地址或公共 IP 的完整 FQDN 提供给 Azure Stack Hub 操作员,以便他们可以使用此 MySQL 群集创建 MySQL 托管服务器。

配置 Azure Stack Hub MySQL 托管服务器

创建并正确配置 MySQL Server 群集后,Azure Stack Hub 操作员必须将其添加为 Azure Stack Hub MySQL 托管服务器。

请务必使用之前在创建 MySQL 群集的资源组 (mysqlip) 时记录的 MySQL 群集主 VM 的公共 IP 或公共 IP 的完整 FQDN。 此外,操作员需要知道创建的 MySQL Server 身份验证凭据,以远程访问 MySQL 群集数据库。

注意

此步骤必须由 Azure Stack Hub 操作员从 Azure Stack Hub 管理员门户运行。

使用 MySQL 群集的公共 IP 和 MySQL 身份验证登录信息,Azure Stack Hub 操作员现在可以使用新的 MySQL 群集创建 MySQL 托管服务器

还要确保已创建计划和产品/服务,以便用户可以创建 MySQL 数据库。 操作员需要将 Microsoft.MySqlAdapter 服务添加到计划中,并专门为高度可用的数据库创建新配额。 有关创建计划的详细信息,请参阅服务、计划、套餐和订阅概述

提示

部署 MySQL Server 资源提供程序之前,Microsoft.MySqlAdapter 服务将无法添加到计划中。

创建高度可用的 MySQL 数据库

在 Azure Stack Hub 操作员创建和配置 MySQL 群集,并将其添加为 Azure Stack Hub MySQL 托管服务器后,自己的订阅中包含 MySQL Server 数据库功能的租户用户可以按照本节中的步骤创建高度可用的 MySQL 数据库。

注意

以租户用户(其订阅提供 MySQL Server 功能,即 Microsoft.MySQLAdapter 服务)身份从 Azure Stack Hub 用户门户运行这些步骤。

  1. 登录到用户门户:

    • 对于集成系统部署,门户地址将根据解决方案的区域和外部域名而有所不同。 它将采用 https://portal.<region>.<FQDN> 格式。
    • 对于 Azure Stack 开发工具包 (ASDK),门户地址为 https://portal.local.azurestack.external
  2. 选择“+ 创建资源”>“数据 + 存储”,然后选择“MySQL 数据库”。

    提供所需的数据库属性信息,包括名称、排序规则、使用的订阅以及用于部署的位置。

    Create MySQL database in Azure Stack Hub user portal

  3. 选择 SKU,然后选择要使用的适当 MySQL 托管服务器 SKU。 在本示例中,Azure Stack Hub 操作员创建了 MySQL-HA SKU 以支持 MySQL 群集数据库的高可用性。

    Select SKU in Azure Stack Hub user portal

  4. 选择“登录名”>“创建新的登录名”,然后提供要用于新数据库的 MySQL 身份验证凭据。 完成后,选择“确定”,然后选择“创建”以开始数据库部署过程。

    Add login in Azure Stack Hub user portal

  5. MySQL 数据库部署成功完成后,查看数据库属性以发现用于连接到新的高度可用数据库的连接字符串。

    View connection string in Azure Stack Hub user portal

后续步骤

更新 MySQL 资源提供程序