创建集群及其主实例

本页面介绍了如何创建 AlloyDB 集群及其主实例。

准备工作

  • 您使用的 Google Cloud 项目必须已启用才能访问 AlloyDB
  • 您使用的 Google Cloud 项目中的 VPC 网络必须已针对 AlloyDB 专用服务访问通道进行了配置
  • 您必须在所使用的Google Cloud 项目中拥有以下 IAM 角色之一:
    • roles/alloydb.admin(AlloyDB Admin 预定义 IAM 角色)
    • roles/owner(Owner 基本 IAM 角色)
    • roles/editor(Editor 基本 IAM 角色)
  • 如果您没有上述任何角色,请与组织管理员联系以申请访问权限。
  • 您还必须在所使用的Google Cloud 项目中拥有 compute.networks.list 权限。如需获得此权限,同时遵循最小权限原则,请让管理员向您授予 Compute Network User (roles/compute.networkUser) 角色。
  • 对于开发和沙盒工作负载,请考虑区域和机器类型。 如果您打算使用 1 vCPU 机器类型,请确保您选择的区域支持该机器类型。如需了解详情,请参阅使用 1 vCPU 时的注意事项

创建新集群

控制台

  1. 前往集群页面。

    转到集群

  2. 点击创建集群

  3. 选择集群配置。如需详细了解高可用性配置与基本配置之间的区别,请参阅节点和实例

    如果您不确定新集群是否需要读取池实例,请选择一个不包含读取池的配置。您可以根据需要,在以后随时向集群添加读取池实例。

  4. 点击继续

  5. 配置集群部分的集群 ID 字段中,输入集群的 ID。

  6. 密码字段中,输入新集群的初始密码。AlloyDB 会在创建集群时将所提供的密码分配给 postgres 数据库用户。

  7. 数据库版本字段中,选择您希望集群数据库服务器与之兼容的 PostgreSQL 主要版本。

  8. 选择区域。 对于开发和沙盒工作负载,请考虑 1 vCPU 机器类型(预览版),该机器类型在部分区域提供。如需了解详情,请参阅使用 1 vCPU 时的注意事项

  9. 选择网络路径。

  10. 可选:如需将特定 IP 地址范围应用于此集群,而不是允许 AlloyDB 选择 IP 地址范围,请按以下步骤操作:

    1. 点击显示分配的 IP 范围选项

    2. 分配的 IP 范围列表中选择一个 IP 地址范围。

    如需详细了解此选项,请参阅创建具有特定 IP 地址范围的集群

  11. 可选:如需使用客户管理的加密密钥 (CMEK)(而非 Google 管理的加密)对此集群进行加密,请执行以下额外步骤:

    1. 点击高级加密选项

    2. 选择客户管理的加密密钥 (CMEK)

    3. 在显示的菜单中,选择一个客户管理的密钥。

      Google Cloud 控制台只会在此列表中列出与新集群位于同一 Google Cloud 项目和区域中的密钥。如要使用此列表中未列出的密钥,请点击没看到您的密钥?输入密钥资源名称,然后在显示的对话框中输入密钥的资源名称。

      请注意,将 CMEK 与 AlloyDB 搭配使用需要进行一些额外设置。如需了解详情,请参阅将 CMEK 与 AlloyDB 搭配使用

    4. 点击继续

  12. 配置主实例:

    1. 实例 ID 字段中,输入主实例的 ID。
    2. 选择以下机器系列之一:

      • C4A(基于 Google Axion 的机器系列)(预览版
      • N2(基于 x86 的机器系列)。这是默认的机器系列。
    3. 选择机器类型。

      • C4A 支持 1、4、8、16、32、48、64 和 72 种机器类型或形式。
      • N2 支持 2、4、8、16、32、64、96 和 128 机器类型。

      如需详细了解如何使用基于 C4A Axion 的机器系列(包括 1 个 vCPU 机器类型),请参阅使用基于 C4A Axion 的机器系列时的注意事项

    4. 可选:为实例设置自定义标志。对于每个标志,请按以下步骤操作:

      1. 点击添加标志
      2. 新增数据库标志列表中,选择一个标志。
      3. 为标志提供值。
      4. 点击完成
  13. 如果您选择没有读取池的集群类型,请点击创建集群

gcloud

如需使用 gcloud CLI,您可以安装并初始化 Google Cloud CLI,也可以使用 Cloud Shell

  1. 如需创建启用了专用服务访问通道或 Private Service Connect 的集群,请使用 gcloud alloydb clusters create 命令。

    专用服务访问通道

    gcloud alloydb clusters create CLUSTER_ID \
        --database-version=POSTGRES_VERSION \
        --password=PASSWORD \
        --region=REGION_ID \
        --project=PROJECT_ID \
        --network=NETWORK

    Private Service Connect

    gcloud alloydb clusters create CLUSTER_ID \
        --database-version=POSTGRES_VERSION \
        --password=PASSWORD \
        --region=REGION_ID \
        --project=PROJECT_ID \
        --enable-private-service-connect 

    替换以下内容:

    • CLUSTER_ID:您所创建的集群的 ID。它必须以小写字母开头,可以包含小写字母、数字和连字符。

    • VERSION:您希望集群数据库服务器与之兼容的 PostgreSQL 主要版本。请按以下方式之一操作:

      • 14,用于与 PostgreSQL 14 兼容

      • 15,用于与 PostgreSQL 15 兼容

      • 16,用于与 PostgreSQL 16 兼容,这是 AlloyDB 支持的默认 PostgreSQL 版本。

      • 17,用于与 PostgreSQL 17(预览版)兼容

        如需详细了解使用预览版 PostgreSQL 17 需遵循的限制,请参阅预览版 PostgreSQL 17 兼容性

    • PASSWORD:要用于默认 postgres 用户的密码。

    • NETWORK(可选):针对 AlloyDB 专用服务访问通道配置的 VPC 网络的名称。如果省略 --network 标志,AlloyDB 会使用 default 网络。

    对于共享 VPC 网络,请设置为 VPC 网络的完全限定路径,例如 projects/cymbal-project/global/networks/shared-vpc-network

    • --enable-private-service-connect(可选):设置后可启用 Private Service Connect 作为集群及其实例的连接方法。

    • REGION_ID:您要将集群放置在其中的区域。

    • PROJECT_ID:您要将集群放置在其中的项目的 ID。

    此命令会启动一个长时间运行的操作,并返回操作 ID。

  2. 可选:如需将特定 IP 地址范围应用于此集群,而不是允许 AlloyDB 选择 IP 地址范围,请提供以下参数:

    --allocated-ip-range-name=RANGE
    

    RANGE 替换为您希望此集群用于专用服务访问通道的 IP 地址范围的名称。

    如需详细了解此选项,请参阅创建具有特定 IP 地址范围的集群

  3. 可选:如需使用客户管理的加密密钥 (CMEK)(而非默认的 Google 管理的加密)对此集群进行加密,请提供以下参数:

    --kms-key=KEY_ID \
    --kms-keyring=KEYRING_ID \
    --kms-location=LOCATION_ID \
    --kms-project=PROJECT_ID
    

    请替换以下内容:

    • KEY_ID:要使用的 CMEK 密钥的 ID。

    • KEYRING_ID:密钥的密钥环的 ID。

    • LOCATION_ID:密钥环区域的 ID,该区域必须与集群区域相同。

    • PROJECT_ID:密钥环项目的 ID。

  4. 确认操作是否成功。

    gcloud alloydb operations describe OPERATION_ID \
        --region=REGION_ID \
        --project=PROJECT_ID

    OPERATION_ID 替换为从上一步返回的操作 ID。

创建主集群后,您必须创建主实例。

创建主实例

如需创建主实例,请使用 gcloud alloydb instances create 命令。

    gcloud alloydb instances create INSTANCE_ID \
        --instance-type=PRIMARY \
        --cpu-count=CPU_COUNT \
        --machine-type=MACHINE_TYPE \
        --region=REGION_ID \
        --cluster=CLUSTER_ID \
        --project=PROJECT_ID \

替换以下内容:

  • INSTANCE_ID:您所创建的实例的 ID。它必须以小写字母开头,可以包含小写字母、数字和连字符。
  • CPU_COUNT:您希望实例拥有的 N2 vCPU 数量。默认值为 N2。有效值包括:

    • 2:2 个 vCPU,16 GB RAM
    • 4:4 个 vCPU,32 GB RAM
    • 8:8 个 vCPU,64 GB RAM
    • 16:16 个 vCPU,128 GB RAM
    • 32:32 个 vCPU,256 GB RAM
    • 64:64 个 vCPU,512 GB RAM
    • 96:96 个 vCPU,768 GB RAM
    • 128:128 个 vCPU,864 GB RAM

  • MACHINE_TYPE:在部署 N2 机器时,此参数是可选的。如需部署基于 C4A Axion 的机器系列(预览版),或者在 C4A 机器与 N2 机器之间迁移,请选择此参数并设置以下值。

    MACHINE_TYPECPU_COUNT 结合使用时,CPU_COUNTMACHINE_TYPE 中的值必须匹配,否则会出现错误。

    对于基于 C4A Axion 的机器系列,请选择具有以下值的机器类型:

    • c4a-highmem-1
    • c4a-highmem-4-lssd
    • c4a-highmem-8-lssd
    • c4a-highmem-16-lssd
    • c4a-highmem-32-lssd
    • c4a-highmem-48-lssd
    • c4a-highmem-64-lssd
    • c4a-highmem-72-lssd

    如需部署 4vCPU 及更高配置的 C4A,请使用后缀 lssd 以启用超快缓存。

    如需详细了解如何使用基于 C4A Axion 的机器系列(包括 1 个 vCPU 机器类型),请参阅使用基于 C4A Axion 的机器系列时的注意事项

    对于基于 x86 的 N2 机器系列,请使用具有以下值的机器类型:

    • N2-highmem-2
    • N2-highmem-4
    • N2-highmem-8
    • N2-highmem-16
    • N2-highmem-32
    • N2-highmem-64
    • N2-highmem-96
    • N2-highmem-128
  • REGION_ID:您要将实例放置在其中的区域。

  • CLUSTER_ID:您之前创建的集群的 ID。

  • PROJECT_ID:在其中创建了集群的项目的 ID。

可选:如需将特定 IP 地址范围应用于此实例,并替换在集群级配置的所有 IP 地址范围分配,请提供以下参数:

    --allocated-ip-range-override=OVERRIDE_RANGE_NAME

OVERRIDE_RANGE_NAME 替换为您想要此实例用于专用服务访问通道的 IP 地址范围的名称,例如 google-managed-services-default。范围名称必须符合 RFC 1035 的要求。具体而言,名称的长度必须为 1-63 个字符,并且必须与正则表达式 [a-z]([-a-z0-9]*[a-z0-9])? 匹配。

如需详细了解此选项,请参阅创建具有特定 IP 地址范围的实例

您还可以创建启用了 Private Service Connect 的 AlloyDB 实例。如需了解如何为启用了 Private Service Connect 的集群创建主实例,请参阅创建 AlloyDB 实例

Terraform

如需创建集群,请使用 Terraform 资源

以下是基于 AlloyDB 集群完整示例创建集群的代码段:

resource "google_alloydb_cluster" "cluster_abc" {
  cluster_id = "alloydb-cluster"
  location   = "us-central1"
  network_config {
    network = google_compute_network.default.id
  }
  database_version = "POSTGRES_16"

  initial_user {
    user     = "postgres"
    password = "postgres"
  }

  continuous_backup_config {
    enabled              = true
    recovery_window_days = 14
  }

  automated_backup_policy {
    location      = "us-central1"
    backup_window = "1800s"
    enabled       = true

    weekly_schedule {
      days_of_week = ["MONDAY"]

      start_times {
        hours   = 23
        minutes = 0
        seconds = 0
        nanos   = 0
      }
    }

    quantity_based_retention {
      count = 1
    }

    labels = {
      test = "alloydb-cluster-backup-policy-labels"
    }
  }

  labels = {
    test = "alloydb-cluster-labels"
  }
}

data "google_project" "project" {}

resource "google_compute_network" "default" {
  name = "alloydb-cluster-network"
}

准备 Cloud Shell

如需在 Google Cloud 项目中应用 Terraform 配置,请按以下方式准备 Cloud Shell:

  1. 启动 Cloud Shell
  2. 设置要应用 Terraform 配置的默认 Google Cloud 项目。

    您只需为每个项目运行一次以下命令,即可在任何目录中运行它。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。

准备目录

每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。

  1. Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须是 TF 文件,例如 main.tf。在本文档中,该文件称为 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 将示例代码复制到新创建的 main.tf 中。 (可选)从 GitHub 中复制代码。如果 Terraform 代码段是端到端解决方案的一部分,则建议这样做。
  3. 查看 main.tf 文件,并修改要应用于您环境的示例参数。
  4. 保存更改。
  5. 初始化 Terraform。您只需为每个目录执行一次此操作。
    terraform init
    (可选)如需使用最新的 Google 提供程序版本,请添加 -upgrade 选项:
    terraform init -upgrade

应用更改

  1. 查看配置,确认 Terraform 更新是否符合您的预期:
    terraform plan
    根据需要更正配置。
  2. 通过运行以下命令并在提示符处输入 yes 来应用 Terraform 配置:
    terraform apply
    等待 Terraform 显示 Apply complete! 消息。
  3. 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到相应资源,以确保 Terraform 已创建或更新它们。

REST v1

创建集群

此示例会创建一个集群。 如需查看此调用的完整参数列表,请参阅方法:projects.locations.clusters.create。如需了解集群设置,请参阅查看集群和实例设置

请勿在集群 ID 中包含敏感信息或个人身份信息,因为它可供外部用户查看。无需在集群名称中包含项目 ID。此操作将在适当的位置(例如在日志文件中)自动完成。

如需发送请求,请将请求正文保存在名为 cluster_request.json 的文件中:

{
  "databaseVersion": "DATABASE_VERSION",
  "initialUser": {
    "user": "INITIAL_USERNAME",
    "password": "INITIAL_USER_PASSWORD"
  },
  "labels": {
    "test": "alloydb-cluster-full"
  }
}

进行以下替换:

  • DATABASE_VERSION:数据库版本的枚举字符串,例如 POSTGRES_16
  • INITIAL_USERNAME:您用于默认 postgres 用户的用户名。
  • INITIAL_USER_PASSWORD:您用于默认 postgres 用户的密码。

使用以下 HTTP 方法和网址:

POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters?cluster_id=CLUSTER_ID

进行以下替换:

  • PROJECT_ID:您要将集群放置在其中的项目的 ID。
  • LOCATION_ID:集群区域的 ID。
  • CLUSTER_ID:您创建的集群的 ID。集群 ID 必须以小写字母开头,可以包含小写字母、数字和连字符。

您可以使用以下 curl 命令来执行上述请求:

curl -X POST   -H "Authorization: Bearer $(gcloud auth print-access-token)"   -H "Content-Type: application/json"   https://alloydb.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION_ID/clusters?cluster_id=CLUSTER_ID   -d @cluster_request.json

创建主实例

此示例会创建一个主实例。如需查看此调用的完整参数列表,请参阅方法:projects.locations.clusters.instances.create。如需了解集群设置,请参阅查看集群和实例设置

请勿在集群 ID 中包含敏感信息或个人身份信息,因为它可供外部用户查看。无需在集群名称中包含项目 ID,因为系统会在适当的位置(例如在日志文件中)自动包含项目 ID。

如需发送请求,请将以下请求正文保存在名为 instance_request.json 的文件中。

{
  "instance_type": "PRIMARY",
  "machine_config": {
    "cpu_count": "vCPU_COUNT"
  }
}

进行以下替换:

  • VCPU_COUNT:要创建的实例上的可见 CPU 核心数。

上述示例创建了一个具有以下规范的 N2 实例:

  • 2:2 vCPUs、16 GB RAM
  • 4:4 vCPUs, 32 GB RAM
  • 8:8 vCPUs, 64 GB RAM
  • 16:16 vCPUs, 128 GB RAM
  • 32:32 vCPUs, 256 GB RAM
  • 64:64 vCPUs, 512 GB RAM
  • 96:96 vCPUs, 768 GB RAM
  • 128:128 vCPUs, 864 GB RAM

如需创建 C4A 实例,请在 machine_config 结构中使用 machine_type 字段,而不是 cpu_count,如以下示例所示:

machine_config: {
  machine_type : MACHINE_TYPE,
},

对于基于 C4A Axion 的机器系列,请使用以下有效值:

  • c4a-highmem-1
  • c4a-highmem-4-lssd
  • c4a-highmem-8-lssd
  • c4a-highmem-16-lssd
  • c4a-highmem-32-lssd
  • c4a-highmem-48-lssd
  • c4a-highmem-64-lssd
  • c4a-highmem-72-lssd

对于 N2 机器系列,请使用以下有效值:

  • n2-highmem-2
  • n2-highmem-4
  • n2-highmem-8
  • n2-highmem-16
  • n2-highmem-32
  • n2-highmem-64
  • n2-highmem-96
  • n2-highmem-128

使用以下 HTTP 方法和网址:

POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances?instance_id=INSTANCE_ID

进行以下替换:

  • PROJECT_ID:您要将集群放置在其中的项目的 ID。
  • LOCATION_ID:集群区域的 ID。
  • CLUSTER_ID:您创建的集群的 ID。该 ID 必须以小写字母开头,可以包含小写字母、数字和连字符。
  • INSTANCE_ID:您要创建的主实例的名称。

您可以使用 curl 执行请求,如以下示例所示:

curl -X POST   -H "Authorization: Bearer $(gcloud auth print-access-token)"   -H "Content-Type: application/json"   https://alloydb.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances?instance_id=INSTANCE_ID   -d @instance_request.json

克隆活跃集群

如需创建活跃集群的克隆(包含所有源集群数据的副本并在同一区域运行),请对该集群执行时间点恢复。您可以在执行此操作时指定非常近的时间点,例如当前分钟的第一秒。

此过程仅将源集群的数据复制到克隆中,而不会复制源集群的任何配置。如需使用 CMEK 加密克隆的数据,您需要在时间点恢复命令中指定 CMEK 详细信息,即使源集群的数据已使用 CMEK 进行加密也是如此。创建新集群后,您需要添加实例、数据库标志、备份时间表以及满足您需求的任何其他必要配置。

以这种方式创建的集群独立于其来源,其数据在初始复制完成后与源集群的数据没有任何关系。如果您想创建自动跟踪和复制在其源集群中进行的更改的次要集群,请参阅跨区域复制简介

创建具有特定 IP 地址范围的集群

AlloyDB 使用专用服务访问通道,让集群的内部资源能够相互通信。在您创建集群之前,您的虚拟私有云 (VPC) 网络必须至少包含一个配置了专用服务访问通道连接的 IP 地址范围。

如果您的 VPC 网络包含多个配置了专用服务访问通道的 IP 地址范围,您可以选择指定 AlloyDB 为新集群分配的范围。IP 地址范围必须至少为 /24,并且有足够的可用空间,才能成功创建集群。

如需指定 IP 地址范围,请参阅创建集群中的可选步骤。

如果您未指定范围,AlloyDB 会在创建集群时执行以下操作之一:

  • 如果您有多个可提供专用服务访问通道的 IP 地址范围,AlloyDB 会选择其中一个范围。

  • 如果您在 VPC 中仅设置了一个具有专用服务访问通道的 IP 地址范围,AlloyDB 会将该范围应用于新集群。

如需详细了解如何创建 IP 地址范围以用于 AlloyDB,请参阅启用专用服务访问通道

创建具有特定 IP 地址范围的实例

与创建具有特定 IP 地址范围的集群类似,您可以创建实例,并为实例指定 IP 地址范围,以替换集群级的所有 IP 地址范围分配。您可以使用 Google Cloud CLI、Terraform 或 REST API 在创建新实例时设置特定的 IP 地址范围。

IP 地址范围必须至少为 /24,并且有足够的可用空间,才能成功创建实例。如需详细了解如何创建 IP 地址范围以用于 AlloyDB,请参阅启用专用服务访问通道

如果您在创建实例期间未指定要替换的范围,AlloyDB 会执行以下操作之一:

  • 如果您在创建集群期间设置了可选的已分配 IP 地址范围,AlloyDB 会选择其中一个范围来创建新实例。

  • 如果您在创建集群期间未设置可选的已分配 IP 地址范围,AlloyDB 会选择其中一个可提供专用服务访问通道的范围。

使用基于 C4A Axion 的机器系列时的注意事项

AlloyDB 提供基于 Google Axion(Google 基于 Arm 的自定义处理器)的 C4A 机器系列。C4A 虚拟机 (VM) 有预定义配置可供选择,可提供 1、4、8、16、32、48、64 和 72 个 vCPU,可提供容量最高可达 576 GB 的双倍数据速率 5 (DDR5) 内存。

选择 C4A 时,请注意以下几点:

  • 如要部署 C4A 机器系列,您可以使用 MACHINE_TYPECPU_COUNT,其中 CPU_COUNT 必须与 MACHINE_TYPEcpu-count 的值一致。
  • 如要使用 Google Cloud CLI 从 N2 更新到 C4A,您必须更新 MACHINE_TYPECPU_COUNT,其中 CPU_COUNT 必须与 MACHINE_TYPEcpu-count 的值一致。
  • 如要从 C4A 更新到 N2,您必须更新 MACHINE_TYPECPU_COUNT,其中 CPU_COUNT 必须与 MACHINE_TYPEcpu-count 的值一致。

以下区域支持 C4A:

  • asia-east1
  • asia-southeast1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • us-central1
  • us-east1
  • us-east4

使用 1 vCPU 机器类型时的注意事项

AlloyDB 提供 1 vCPU C4A 机器类型,仅用于开发和沙盒用途。对于生产工作负载,请选择 2 个或更多 vCPU。

选择 1 vCPU 时,请注意以下限制:

  • 1 vCPU 配置提供 8 GB 内存,不支持超快缓存。
  • 建议在大小为数十 GB 的小型数据库的开发和沙盒环境中使用 1 vCPU 配置。对于大型数据库及生产环境工作负载,请考虑使用 2 个或更多 vCPU。
  • 您可以配置高可用性 (HA),但我们不提供正常运行时间 SLA。
  • C4A 机器不支持对 1 vCPU、48 vCPU 和 72 vCPU 配置进行主要版本就地升级。在启动主要版本就地升级之前,请考虑其他升级方法,例如转储和恢复,或尝试扩容。
  • 请了解有哪些区域支持 C4A,您可以在这些区域中部署 1 vCPU 配置。

后续步骤