创建 SQL Server 虚拟机实例


Microsoft SQL Server 是一种在 Windows Server 和某些 Linux 发行版上运行的数据库系统。您可以将 Compute Engine 上的 SQL Server 用作应用后端的一部分、一个灵活的开发测试环境或者作为本地系统的补充用于备份和灾难恢复目的。

Compute Engine 会提供已在 Windows Server 上预安装 Microsoft SQL Server 的映像。对于这些 SQL Server 映像,Compute Engine 会管理 Windows Server 和 SQL Server 的许可,并将相应费用计入月度账单中。您可以创建具有 SQL Server 的虚拟机,并在必要时横向扩容为大型多节点配置。

Compute Engine 将您的数据存储在可自动实现冗余和自动进行静态加密的耐用永久性磁盘上。您可以使用这些永久性磁盘存储您的 SQL Server 数据,而无需担心您的数据的耐用性和安全性。您可以创建如下虚拟机来提升性能:将本地 SSD 用作缓存来为 SQL Server 查询提供额外的 IOPS 和性能。

您可以通过以下方式创建运行 SQL Server 的 Compute Engine 虚拟机 (VM) 实例:

如需预安装了 SQL Server 的可用映像的完整列表,请参阅操作系统详细信息

SQL Server 映像对机器类型的要求

SQL Server Standard

您可以在具有任何机器类型的虚拟机上运行 SQL Server Standard,但共享核心机器类型不会以最优方式运行。Google 建议您使用至少配备了一个 vCPU 的虚拟机来运行 SQL Server Standard。

SQL Server Enterprise

运行 SQL Server Enterprise 的虚拟机必须至少配备 4 个 vCPU。为了获得最佳性能,Google 建议您在具有较大内存容量的虚拟机上运行 SQL Server Enterprise。根据您的工作负载,您应该使用配备了 8 个或者更多个 vCPU 的高内存机器类型。这些机器类型会将内存与 Compute Engine 中可用的每个 vCPU 之比最大化,达到最适合 SQL Server Enterprise 虚拟机的状态。

此外,您还可以在 Compute Engine 上使用 SQL Server Enterprise 来创建 SQL Server 可用性组

默认组件

SQL Server 映像默认包含一些组件。默认包含的组件取决于您选择的 SQL Server 版本。

如需了解您的 SQL Server 版本中包含的默认组件,请参阅 SQL Server 2019 版本和支持的功能

如需了解如何修改 SQL Server 组件,请参阅向 SQL Server 虚拟机添加功能

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      如需了解详情,请参阅 Set up authentication for a local development environment

      REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

创建 SQL Server 实例

要创建 SQL Server 实例,请为需要使用的特定 SQL Server 版本指定映像系列。如需 SQL Server 映像系列的列表,请参阅操作系统详细信息

为获得最佳性能,数据库服务器平台需要配备了更多虚拟 CPU 和更大内存的机器类型。Google 建议您在运行 SQL Server 实例时使用至少配备了 2 个 vCPU 和 4 GB 内存的机器类型。您可以使用自定义机器类型来配置 SQL Server 实例,以与工作负载的性能要求匹配。此外,您可以使用更大的永久性磁盘和更快的 SSD 永久性磁盘来提升应用的性能。

此外,您必须设置特定的防火墙规则,以允许您的虚拟机所属的 VPC 网络或子网上的 SQL Server 流量。如需了解详情,请参阅 SQL Server 的最佳做法

控制台

如需创建 SQL Server 实例,请按照以下步骤操作:

  1. 在 Google Cloud 控制台中,转到创建实例页面。

    转到“创建实例”

  2. 指定虚拟机详情。

  3. 启动磁盘部分,点击更改,然后执行以下操作:

    1. 公共映像标签页上,点击操作系统列表,然后选择 Windows Server 上的 SQL Server
    2. 版本字段中,选择一个版本。
    3. 启动磁盘类型列表中,选择启动磁盘类型。
    4. 大小 (GB) 字段中,设置启动磁盘大小。
    5. 可选:如需修改启动磁盘的高级配置,请点击显示高级配置,然后指定您的设置。
    6. 要保存启动磁盘配置,请点击选择
  4. 点击创建

创建虚拟机后,请创建防火墙规则以允许访问虚拟机上的 SQL Server。默认 SQL Server 端口为 1433。

  1. 在 Google Cloud 控制台中,转到防火墙规则页面。

    转到“防火墙规则”

  2. 在页面顶部,点击创建防火墙规则以开始创建防火墙规则。

  3. 指定此防火墙规则的详细信息。

    • 名称字段中,指定防火墙规则的名称。
    • 网络字段中,选择 SQL Server 实例所在的 VPC 网络。
    • 选择“入站”作为流量方向
    • 目标字段中,选择防火墙规则的目标,可以是所有实例,也可以是指定的目标标记或服务账号。例如,您可以选择网络中的所有实例选项。如果您为 SQL Server 实例配置了标记或服务账号,则可以将防火墙规则限制为特定标记或服务账号。
    • 来源过滤条件字段中,选择您希望允许在此端口上访问的 IP 范围。对于入口规则,您可以选择来源 IPv4 地址范围、来源 IPv6 地址范围、来源标记或服务账号。使用来源过滤器后面的字段提供有关您选择的其他信息。
    • 协议和端口部分中,选择指定的协议和端口,然后输入 SQL Server 使用的端口。在本示例中,选择 TCP 并输入 1433(默认端口)。
  4. 点击创建以创建此防火墙规则并允许通过端口 1433 访问 SQL Server 实例。

如果您需要向虚拟机添加其他防火墙规则,请参阅防火墙规则文档

gcloud

使用 compute images list 命令查看可用 SQL Server 映像的列表:

gcloud compute images list --project windows-sql-cloud --no-standard-images

使用 compute instances create 命令创建新虚拟机,并为其中一个 Windows Server 或 SQL Server 公共映像指定映像系列。

gcloud compute instances create VM_NAME \
    --image-project windows-sql-cloud \
    --image-family IMAGE_FAMILY \
    --machine-type MACHINE_TYPE \
    --boot-disk-size BOOT_DISK_SIZE \
    --boot-disk-type BOOT_DISK_TYPE

请替换以下内容:

  • VM_NAME:新实例的名称
  • IMAGE_FAMILY:Windows Server 或 SQL Server 映像的其中一个公共映像系列
  • MACHINE_TYPE:可用的机器类型之一。
  • BOOT_DISK_SIZE:启动磁盘大小(以 GB 为单位)。永久性磁盘越大,吞吐量越高
  • BOOT_DISK_TYPE:您的实例的启动磁盘类型。例如 pd-balanced

创建虚拟机后,请创建防火墙规则以允许访问虚拟机上的 SQL Server。默认 SQL Server 端口为 1433。

gcloud compute firewall-rules create sql-server-1433 \
    --description "Allow SQL Server access from all sources on port 1433." \
    --allow tcp:1433 --network NETWORK

其中 NETWORK 是虚拟机所在 VPC 网络的名称。

如果您需要向虚拟机添加其他防火墙规则,请参阅防火墙规则文档

Terraform

如需创建 SQL Server 虚拟机实例,请使用 google_compute_instance 资源

resource "google_compute_instance" "sqlserver_vm" {
  provider = google-beta
  name     = "sqlserver-vm"
  boot_disk {
    auto_delete = true
    device_name = "persistent-disk-0"
    initialize_params {
      image = "windows-sql-cloud/sql-std-2019-win-2022"
      size  = 50
      type  = "pd-balanced"
    }
    mode = "READ_WRITE"
  }
  machine_type = "n1-standard-4"
  zone         = "europe-west1-b"
  network_interface {
    access_config {
      network_tier = "PREMIUM"
    }
    network    = google_compute_network.default.id
    stack_type = "IPV4_ONLY"
    subnetwork = google_compute_subnetwork.default.id
  }
}

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

REST

如需使用 API 创建虚拟机,请在虚拟机创建请求中添加 initializeParams 属性,并指定 Windows 映像。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

instance = {
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [{
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
         "diskName": "DISK_NAME",
         "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY",
         "diskSizeGb": "BOOT_DISK_SIZE",
         "diskType": "BOOT_DISK_TYPE",
       }
    }],
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT"
     }],
    "network": "global/networks/default"
  }],
  "serviceAccounts": [{
       "email": DEFAULT_SERVICE_EMAIL,
       "scopes": DEFAULT_SCOPES
  }]
}

请替换以下内容:

  • PROJECT_ID:项目的 ID。
  • ZONE:此实例的可用区
  • VM_NAME:新虚拟机的名称
  • MACHINE_TYPE:可用的机器类型
  • IMAGE_PROJECT:对于 Windows Server 映像为 windows-cloud;对于预安装了 SQL Server 的 Windows Server 映像为 windows-sql-cloud
  • IMAGE_FAMILY:Windows Server 或 SQL Server 映像的公共映像系列
  • BOOT_DISK_SIZE:启动磁盘大小(以 GB 为单位)。永久性磁盘越大,吞吐量越高
  • BOOT_DISK_TYPE:您的虚拟机的启动磁盘类型。例如 pd-ssd

创建虚拟机后,请创建防火墙规则以允许访问虚拟机上的 SQL Server。默认 SQL Server 端口为 1433。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls

{
 "name": "sql-server-1433",
 "network": "global/networks/NETWORK",
 "allowed": [
  {
   "IPProtocol": "tcp",
   "ports": [
    "1433"
   ]
  }
 ]
}

请替换以下内容:

  • PROJECT_ID:项目的 ID。
  • NETWORK:您的虚拟机所在的 VPC 网络的名称。

创建 SQL Server 实例后,为虚拟机设置初始密码,以便可通过 RDP 连接到虚拟机。然后,以管理员身份运行 SQL Server Management Studio 以管理 SQL Server 实例上的数据库

此外,您可以使用以下一项或多项建议来提升 SQL Server 的安装体验:

管理 SQL Server 数据库

以管理员身份运行 SQL Server Management Studio 来配置 SQL Server 数据库。您可以在本地工作站上下载并安装 SQL Server Management Studio,然后使用 SQL Server Management Studio 远程连接到数据库引擎(位于您的虚拟机上)。

如果无法在本地工作站上安装 Management Studio,请通过 RDP 连接到虚拟机,然后在虚拟机本身上运行 Management Studio。默认情况下,SQL Server 2012 和 SQL Server 2014 都包含 SQL Server Management Studio。对于 SQL Server 2016,必须从 Microsoft 网站下载 SQL Server Management Studio 并将其安装在虚拟机上。

默认情况下,SQL Server 使用 Windows 身份验证模式来控制对 SQL Server 本身的远程访问。如果您需要使用 SQL Server 身份验证模式,请更改身份验证模式

手动更新 SQL Server 实例名称

如果您重命名虚拟机(其托管 SQL Server),则必须更新 SQL Server 实例名称。如需了解详情,请参阅重命名托管 SQL Server 独立实例的计算机

后续步骤