在 Azure Stack Hub 上部署 MySQL 资源提供程序

重要

Azure Stack Hub的 SQL 和 MySQL 资源提供程序已弃用,不适用于载入新客户。 而是直接在虚拟机上部署 SQL 或 MySQL,并使用标准工具和做法对其进行管理。 资源提供程序的现有部署将继续受支持,但未计划新功能开发或载入。

使用 MySQL 服务器资源提供程序将 MySQL 数据库公开为 Azure Stack Hub 服务。

MySQL 资源提供程序在 Windows Server 2016 Server Core 虚拟机上作为服务运行。

MySQL 资源提供程序作为服务在特殊的加载项 RP Windows Server 上运行。

只有资源提供者才应在托管 SQL 或 MySQL 的服务器上创建项目。 在主机服务器上创建、但并非由资源提供程序创建的项不受支持,并且可能会导致状态不一致。

先决条件

如果已安装资源提供程序,则可能已完成以下先决条件,并可以跳过本部分。 否则,请在继续之前完成以下步骤:

  1. 向 Azure 注册 Azure Stack Hub 实例(如果尚未这样做)。 你需要将Azure Stack Hub实例注册到 Azure,因为你将连接到Azure并从市场下载项。

  2. 如果不熟悉 Azure Stack Hub 管理员门户的“市场管理”功能,请参阅从 Azure 下载市场项并将其发布到 Azure Stack Hub。 此文逐步讲解如何将项目从 Azure 下载到 Azure Stack Hub 市场。 它涵盖了联网场景和离线场景。 如果 Azure Stack Hub 实例已断开连接或部分连接,则在准备安装时还需要完成其他先决条件操作。

  3. 更新 Microsoft Entra 主目录。 从版本 1910 开始,必须在主目录所在的租户中注册一个新的应用程序。 此应用可使 Azure Stack Hub 成功创建并将较新的资源提供程序(例如事件中心等)注册到你的 Microsoft Entra 租户中。 升级到内部版本 1910 或更高版本后,需要执行此操作。 如果未完成此步骤,市场资源提供程序安装会失败。

MySQL Server 资源提供者的先决条件

  • 需要可以访问的计算机和帐户:

    • Azure Stack Hub 管理员门户
    • 特权终结点(仅在部署 MySQL Server 资源提供程序 V1 或从 MySQL Server 资源提供程序 V1 升级到 MySQL Server 资源提供程序 V2 时才需要)。
    • Azure 资源管理器管理终结点 https://adminmanagement.region.<fqdn>,其中的 <fqdn> 是完全限定的域名。
    • Internet(如果 Azure Stack Hub 已部署为使用 Microsoft Entra ID 作为标识提供者)。
  • 根据以下部分中的版本映射表下载支持的 MySQL 资源提供程序二进制文件版本。 对于 V2 MySQL 资源提供程序,请将市场项下载到 Azure Stack Hub

    支持的 Azure Stack Hub 版本 MySQL RP 版本 运行 RP 服务的 Windows Server
    2206, 2301, 2306, 2311 MySQL RP 版本 2.0.13.x 微软 AzureStack 插件 RP Windows Server 1.2009.0
    2108, 2206 MySQL RP 版本 2.0.6.x 微软 AzureStack 插件 RP Windows Server 1.2009.0
  • 确保所需的 Windows Server VM 已下载到 Azure Stack Hub 市场。 如有需要,请根据版本映射表手动下载映像。

  • 确保满足数据中心集成先决条件:

    先决条件 参考文献
    条件 DNS 转发已正确设置。 Azure Stack Hub 数据中心集成 - DNS
    资源提供程序的入站端口处于打开状态。 Azure Stack Hub 数据中心集成 - 发布端点
    PKI 证书主题和 SAN 已正确设置。 Azure Stack Hub 部署必需的 PKI 先决条件:Azure Stack Hub 部署 PaaS 证书先决条件
  • 准备证书。 (仅适用于集成系统安装

    • 必须提供 Azure Stack Hub 部署 PKI 要求的可选 PaaS 证书部分中所述的 SQL PaaS PKI 证书。 使用者可选名称(SAN)必须遵循以下命名模式:CN=*.dbadapter。<region>.<fqdn>,受密码保护。 证书的屏幕截图。
    • 部署 MySQL Server 资源提供程序 V1 时,将 .pfx 文件置于 DependencyFilesLocalPath 参数指定的位置。 不要为 ASDK 系统提供证书。
    • 部署 MySQL Server 资源提供程序 V2 时,请为以下安装步骤准备证书。

离线场景

在断开连接的方案中部署 MySQL Server 资源提供程序 V2 时,请按照 下载市场项到 Azure Stack Hub 的说明将 MySQL Server 资源提供程序项和加载项 RP Windows Server 项下载到 Azure Stack Hub 环境。

在断开连接的方案中部署 MySQL Server 资源提供程序 V1 时,请完成以下步骤以下载所需的 PowerShell 模块并手动注册存储库。

  1. 使用 Internet 连接登录到计算机,并使用以下脚本下载 PowerShell 模块。

    Import-Module -Name PowerShellGet -ErrorAction Stop
    Import-Module -Name PackageManagement -ErrorAction Stop
    
    # path to save the packages, c:\temp\azs1.6.0 as an example here
    $Path = "c:\temp\azs1.6.0"
    
  2. 根据要部署的资源提供程序的版本,运行其中一个脚本。

    # for resource provider version >= 1.1.93.0
    Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureRM -Path $Path -Force -RequiredVersion 2.5.0
    Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureStack -Path $Path -Force -RequiredVersion 1.8.2
    
    # for resource provider version <= 1.1.47.0
    Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureRM -Path $Path -Force -RequiredVersion 2.3.0
    Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureStack -Path $Path -Force -RequiredVersion 1.6.0
    
  3. 然后将下载的包复制到 USB 设备。

  4. 登录到断开连接的工作站,并将包从 USB 设备复制到工作站上的某个位置。

  5. 将此位置注册为本地存储库。

    # requires -Version 5
    # requires -RunAsAdministrator
    # requires -Module PowerShellGet
    # requires -Module PackageManagement
    
    $SourceLocation = "C:\temp\azs1.6.0"
    $RepoName = "azs1.6.0"
    
    Register-PSRepository -Name $RepoName -SourceLocation $SourceLocation -InstallationPolicy Trusted
    
    New-Item -Path $env:ProgramFiles -name "SqlMySqlPsh" -ItemType "Directory" 
    

部署 MySQL 资源提供程序 V2

如果要从 V1 版本升级,请参阅文档 “更新 MySQL 服务器资源提供程序”。

开始安装

  1. 如果尚未登录Azure Stack Hub管理员门户,请选择左侧的 Marketplace Management,然后选择 resource providers

  2. 下载 MySQL 资源提供程序和其他所需软件后, 市场管理 会显示状态为“未安装”的“MySQL 服务器资源提供程序”包。 你可能会看到显示“已下载”状态的其他包。

    安装 RP 之前市场管理的屏幕截图。

  3. 选择要安装的行。 MySQL Server 资源提供程序安装包页显示顶部的蓝色横幅。 选择横幅以开始安装。 市场管理的屏幕截图,开始安装 RP。

安装先决条件

  1. 接下来,你将被转移到安装页。 选择“安装必备组件”开始安装过程。 市场管理安装先决条件的屏幕截图。

  2. 等到必备组件安装成功。 在继续下一步之前,你应该会在“安装必备组件”旁边看到一个绿色的复选标记。 市场管理安装先决条件成功的屏幕截图。

准备机密

  1. 2. 准备机密 步骤下,选择 添加证书。 此时会显示 “添加证书 ”面板。 市场管理准备机密的屏幕截图。

  2. 选择“添加证书”上的“浏览”按钮(紧邻证书文件名字段的右侧)。 选择在完成先决条件时获取的 .pfx 证书文件。

  3. 请输入您提供的密码,用于为 SQL Server 资源提供程序的 SSL 证书创建一个安全字符串。 然后选择“添加”。 市场管理添加证书的屏幕截图。

配置和安装资源提供程序

  1. 证书安装成功后,会看到 “准备机密”旁边的绿色复选标记。 现在,选择 3 安装资源提供程序旁边的“配置 + 安装”按钮。 市场管理启动 RP 安装的屏幕截图。

  2. 接下来,为 MySQL 连接器提供Azure Stack Hub Blob URI。

    • 在此处查看 MySQL 连接器的 GPL 许可证,并将版本 8.0.21 下载到本地文件夹。

    • 使用默认作员订阅创建存储帐户,并使用访问级别“Blob”或“Container”创建容器。 创建存储帐户的屏幕截图。 创建存储容器的屏幕截图。

    • mysql-connector-net-8.0.21.msi 文件从本地文件夹上传到新创建的存储容器。 将 MySQL 连接器上传到容器的屏幕截图。

    重要

    确保 MySQL 连接器的版本为 8.0.21。

    • 复制 Blob URI。 复制 MySQL 连接器 URI 的屏幕截图。

    • 返回到 MySQL RP 配置页。 将 Blob URI(例如) https://<storageAccountName>.blob.<region>.<FQDN>/<containerName>/mysql-connector-net-8.0.21.msi粘贴到文本框中,然后选择“ 确定”。 提供 MySQL 连接器 URI 的屏幕截图。

  3. 接下来,你将看到以下页面,该页指示正在安装 MySQL 资源提供程序。 市场管理 RP 安装的屏幕截图。

  4. 等待安装完成通知。 此过程通常要花费一小时或更长时间,具体取决于你的 Azure Stack Hub 类型。 市场管理系统 RP 安装过程中的截图。

  5. 通过返回到 “市场管理资源提供程序 ”页,验证 MySQL Server 资源提供程序的安装是否成功。 MySQL 服务器资源提供程序的状态应显示“已安装”。 市场管理软件 RP 安装后的屏幕截图。

部署 SQL 资源提供程序 V1

完成所有先决条件后,运行自提取程序,将下载的安装包解压缩到临时目录。 从可以访问 Azure Stack Hub Azure 资源管理器管理员终结点和特权终结点的计算机运行 DeployMySqlProvider.ps1 脚本,以部署 MySQL 资源提供程序。 DeployMySqlProvider.ps1 脚本是从你为所用 Azure Stack Hub 版本下载的 MySQL 资源提供程序安装文件中提取出来的。

重要

在部署资源提供程序之前,请查看发行说明,了解可能影响部署的新功能、修补程序和任何已知问题。

若要部署 MySQL 资源提供程序,请打开一个提升的 PowerShell 窗口(不是 PowerShell ISE),然后更改为将 MySQL 资源提供程序二进制文件提取到的目录。

重要

在运行部署或更新脚本之前,使用 Clear-AzureRmContext -Scope CurrentUserClear-AzureRmContext -Scope Process 清除缓存。

注释

如果要在断开连接的环境中部署 MySQL Server 资源提供程序 V1,请将 mysql-connector-net-6.10.5.msi 文件复制到本地路径。 使用 DependencyFilesLocalPath 参数提供路径名称。

运行 DeployMySqlProvider.ps1 脚本,该脚本完成以下任务:

  • 将证书和其他项目上传到 Azure Stack Hub 上的存储帐户。
  • 发布库程序包,以便你可以通过该库部署 MySQL 数据库。
  • 发布用于部署托管服务器的图集包。
  • 使用下载的 Windows Server 2016 核心映像或 Microsoft AzureStack 加载项 RP Windows Server 映像部署 VM,然后安装 MySQL 资源提供程序。
  • 注册映射到资源提供程序 VM 的本地 DNS 记录。
  • 将资源提供程序注册到操作员帐户的本地 Azure 资源管理器。

注释

启动 MySQL 资源提供程序部署时,将创建 system.local.mysqladapter 资源组。 完成此资源组所需的部署可能需要长达 75 分钟的时间。 不要将任何其他资源放在 system.local.mysqladapter 资源组中。

DeployMySqlProvider.ps1 参数

从命令行指定这些参数。 如果未指定它们,或者任何参数验证失败,脚本会提示你提供所需的参数。

参数名称 DESCRIPTION 注释或默认值
CloudAdminCredential 访问特权终结点时所需的云管理员凭据。 必需
AzCredential Azure Stack Hub 服务管理员帐户的凭据。 使用用于部署 Azure Stack Hub 的相同凭据。 如果用于 AzCredential 的帐户需要多重身份验证(MFA),脚本将失败。 必需
VMLocalCredential MySQL 资源提供程序 VM 的本地管理员帐户的凭据。 必需
PrivilegedEndpoint 特权终结点的 IP 地址或 DNS 名称。 必需
AzureEnvironment 用于部署 Azure Stack Hub 的服务管理员帐户的 Azure 环境。 仅在 Microsoft Entra 部署中为必需。 支持的环境名称为 AzureChinaCloud AzureChinaCloud
DependencyFilesLocalPath 依赖文件的本地路径 对于集成系统,请将证书 .pfx 文件置于此目录中。 对于断开连接的环境,请将 mysql-connector-net-6.10.5.msi 下载到此目录。 可以选择在此处复制一个 Windows 更新 MSU 包。 可选对于 集成系统或断开连接的环境是必需的)
默认SSL证书密码 .pfx 证书的密码。 必需
MaxRetryCount 如果发生失败,你想重试每个操作的次数。 2
RetryDuration 每两次重试的超时间隔(秒)。 120
卸载 删除资源提供程序和所有关联的资源(请参阅以下说明)。
DebugMode 防止在失败时自动清除。
AcceptLicense 跳过提示以接受 GPL 许可证。 https://www.gnu.org/licenses/old-licenses/gpl-2.0.html

使用自定义脚本部署 MySQL 资源提供程序

如果要部署 MySQL 资源提供程序版本 1.1.33.0 或更高版本,则需要在 PowerShell 中安装特定版本的 AzureRm.BootStrapper 和Azure Stack Hub模块。

如果要部署 MySQL 资源提供程序版本 1.1.47.0 或更高版本,则部署脚本会自动下载并安装所需的 PowerShell 模块,以便你完成路径 C:\Program Files\SqlMySqlPsh

# Install the AzureRM.Bootstrapper module, set the profile and install the AzureStack module
# Note that this might not be the most currently available version of Azure Stack Hub PowerShell
Install-Module -Name AzureRm.BootStrapper -Force
Use-AzureRmProfile -Profile 2018-03-01-hybrid -Force
Install-Module -Name AzureStack -RequiredVersion 1.6.0

注释

在断开连接的情况下,需要下载所需的 PowerShell 模块,并手动注册存储库作为先决条件。

若要在部署资源提供程序时消除任何手动配置,请自定义以下脚本。 根据需要更改 Azure Stack Hub 部署的默认帐户信息和密码。

# Use the NetBIOS name for the Azure Stack Hub domain. On the Azure Stack Hub SDK, the default is AzureStack but could have been changed at install time.
$domain = "AzureStack"  

# For integrated systems, use the IP address of one of the ERCS VMs.
$privilegedEndpoint = "AzS-ERCS01"

# Provide the Azure environment used for deploying Azure Stack Hub. Required only for Azure AD deployments. Supported environment name is AzureChinaCloud. 
$AzureEnvironment = "<EnvironmentName>"

# Point to the directory where the resource provider installation files were extracted.
$tempDir = 'C:\TEMP\MYSQLRP'

# The service admin account (can be Azure Active Directory or Active Directory Federation Services).
$serviceAdmin = "admin@mydomain.partner.onmschina.cn"
$AdminPass = ConvertTo-SecureString 'P@ssw0rd1' -AsPlainText -Force
$AdminCreds = New-Object System.Management.Automation.PSCredential ($serviceAdmin, $AdminPass)

# Set the credentials for the new resource provider VM local admin account
$vmLocalAdminPass = ConvertTo-SecureString 'P@ssw0rd1' -AsPlainText -Force
$vmLocalAdminCreds = New-Object System.Management.Automation.PSCredential ("mysqlrpadmin", $vmLocalAdminPass)

# And the cloudadmin credential required for privileged endpoint access.
$CloudAdminPass = ConvertTo-SecureString 'P@ssw0rd1' -AsPlainText -Force
$CloudAdminCreds = New-Object System.Management.Automation.PSCredential ("$domain\cloudadmin", $CloudAdminPass)

# Change the following as appropriate.
$PfxPass = ConvertTo-SecureString 'P@ssw0rd1' -AsPlainText -Force

# For version 1.1.47.0 or later, the PowerShell modules used by the RP deployment are placed in C:\Program Files\SqlMySqlPsh,
# The deployment script adds this path to the system $env:PSModulePath to ensure correct modules are used.
$rpModulePath = Join-Path -Path $env:ProgramFiles -ChildPath 'SqlMySqlPsh'
$env:PSModulePath = $env:PSModulePath + ";" + $rpModulePath

# Change to the directory folder where you extracted the installation files. Don't provide a certificate on ASDK!
. $tempDir\DeployMySQLProvider.ps1 `
    -AzCredential $AdminCreds `
    -VMLocalCredential $vmLocalAdminCreds `
    -CloudAdminCredential $cloudAdminCreds `
    -PrivilegedEndpoint $privilegedEndpoint `
    -AzureEnvironment $AzureEnvironment `
    -DefaultSSLCertificatePassword $PfxPass `
    -DependencyFilesLocalPath $tempDir\cert `
    -AcceptLicense

资源提供程序安装脚本完成后,刷新浏览器以确保可以看到最新的更新并关闭当前的 PowerShell 会话。

使用 Azure Stack Hub 门户验证 V1 部署

  1. 以服务管理员身份登录到管理员门户。
  2. 选择“资源组” 。
  3. 选择 system.<location>.mysqladapter 资源组。
  4. 在资源组概述摘要页上,应当没有失败的部署。
  5. 最后,在管理员门户中选择 虚拟机 ,验证 MySQL 资源提供程序 VM 是否已成功创建并正在运行。

Microsoft Entra ID 的重要配置

如果Azure Stack Hub使用Microsoft Entra ID作为标识提供者,请确保安装 MySQL Server 资源提供程序的 VM 具有出站 Internet 连接。

后续步骤

添加托管服务器