建立叢集及其主要執行個體

如要在 AlloyDB for PostgreSQL 中為應用程式部署資料庫環境,請建立叢集及其主要執行個體。叢集會管理區域儲存空間和配置設定,主要執行個體則提供讀寫作業所需的運算資源。您可以使用 Google Cloud 控制台、Google Cloud CLI、REST API 或 Terraform 建立叢集和主要執行個體。

事前準備

必要的角色

您必須具備正確的身分與存取權管理 (IAM) 角色,才能建立第一個 AlloyDB 叢集。

  • 您必須在使用的 Google Cloud 專案中具備下列其中一個 IAM 角色:
    • roles/alloydb.admin (AlloyDB 管理員預先定義的 IAM 角色)
    • roles/owner (擁有者基本 IAM 角色)
    • roles/editor (編輯者基本 IAM 角色)
  • 如果您不具備上述任一角色,請向組織管理員要求存取權。
  • 此外,您也必須在使用的 Google Cloud 專案中具備 compute.networks.list 權限。如要取得這項權限,同時遵循最小權限原則,請要求管理員授予您 Compute 網路使用者 (roles/compute.networkUser) 角色。

建立新的叢集和主要執行個體

控制台

  1. 前往「Clusters」(叢集) 頁面。

    前往叢集

  2. 點選「建立叢集」。

  3. 選擇叢集設定。如要進一步瞭解高可用性和基本設定之間的差異,請參閱「什麼是 AlloyDB 執行個體?」。

    如果不確定新叢集是否需要讀取集區執行個體,請選擇不含讀取集區的設定。日後可視需要,將讀取集區執行個體新增至叢集。

  4. 按一下「繼續」。

  5. 在「設定叢集」部分的「叢集 ID」欄位,輸入叢集 ID。

  6. 在「Password」(密碼) 欄位中,輸入新叢集的初始密碼。AlloyDB 會在建立叢集時,將提供的密碼指派給 postgres 資料庫使用者。

  7. 選用:如要手動設定 alloydb.iam_authentication 旗標,請取消選取「Create an IAM database user」(建立 IAM 資料庫使用者)。詳情請參閱「設定資料庫旗標」。

    根據預設,系統會選取「建立 IAM 資料庫使用者」,並執行下列操作:

    • 在主要執行個體上啟用 alloydb.iam_authentication 旗標。

    • 為您建立 IAM 資料庫使用者。

  8. 在「資料庫版本」欄位中,選取新 AlloyDB 叢集的主要 PostgreSQL 版本。

  9. 選取區域。如果是開發和沙箱工作負載,建議使用 1 個 vCPU 的型態,這項功能適用於特定區域。詳情請參閱「使用 1 個 vCPU 時的考量事項」。

  10. 選取網路路徑。

  11. 選用:如要將特定 IP 位址範圍套用至這個叢集,而非允許 AlloyDB 選擇 IP 位址範圍,請按照下列步驟操作:

    1. 按一下「顯示分配的 IP 範圍選項」。

    2. 從「Allocated IP range」(分配的 IP 範圍) 清單中,選取 IP 位址範圍。

    如要進一步瞭解這個選項,請參閱「建立具有特定 IP 位址範圍的叢集」。

  12. 選用:如要使用客戶自行管理的加密金鑰 (CMEK) 加密這個叢集,而非 Google 代管的加密金鑰,請按照下列額外步驟操作:

    1. 按一下「進階加密選項」。

    2. 選取「客戶自行管理的加密金鑰 (CMEK)」。

    3. 在隨即顯示的選單中,選取客戶自行管理的金鑰。

      Google Cloud 控制台會將這份清單限制在與新叢集位於相同 Google Cloud 專案和區域的金鑰。如要使用未列於此清單的金鑰,請按一下「Don't see your key? 輸入金鑰資源名稱,然後在顯示的對話方塊中輸入金鑰的資源名稱。

      請注意,如要搭配使用 CMEK 和 AlloyDB,必須進行一些額外設定。詳情請參閱「搭配使用 CMEK 與 AlloyDB」。

    4. 按一下「繼續」。

  13. 設定主要執行個體:

    1. 在「Instance ID」(執行個體 ID) 欄位中,輸入主要執行個體的 ID。
    2. 選取下列其中一個機器系列:

      • C4A (Google Axion 型機器系列)。
      • N2 (x86 型機器系列)。這是預設機器系列。
      • C4 (x86 型機器系列)。
      • Z3 (Intel Xeon 型機器系列)。
    3. 選取機型。詳情請參閱「選擇機器類型」。

      • C4A 支援 1、2、4、8、16、32、48、64 和 72 個 vCPU。
      • N2 支援 2、4、8、16、32、64、96 和 128 個 vCPU。
      • C4 支援 4、8、16、24、32、48、96、144、192 和 288 個 vCPU。
      • Z3 支援 8、14、16、22、32、44 和 88 個 vCPU。

      如要進一步瞭解如何使用 C4A Axion 機器系列 (包括 1 個 vCPU 機型),請參閱「使用 C4A Axion 機器系列的注意事項」。

    4. 選用:為執行個體設定自訂旗標。請按照下列步驟操作:

      1. 按一下「新增旗標」。
      2. 在「New database flag」(新增資料庫旗標) 清單中,選取旗標。
      3. 提供旗標值。
      4. 按一下「完成」。
  14. 點選「建立叢集」。

gcloud

如要使用 gcloud CLI,您可以安裝並初始化 Google Cloud CLI,也可以使用 Cloud Shell。

您必須先建立 AlloyDB 叢集和主要執行個體,才能開始使用 AlloyDB。

建立叢集

  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 相容

      • 17:與 PostgreSQL 17 相容,這是預設支援的 PostgreSQL 版本

      • 18,與 PostgreSQL 18 相容

    • PASSWORD:預設 postgres 使用者的密碼。

    • NETWORK (選用):您為 AlloyDB 設定私人服務存取權的虛擬私有雲網路名稱。如果省略 --network 旗標,AlloyDB 會使用 default 網路。

      如果您使用 Shared 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 \
        --region=REGION_ID \
        --cluster=CLUSTER_ID \
        --project=PROJECT_ID \
        --cpu-count=CPU_COUNT \
        --machine-type=MACHINE_TYPE \
        --allowed-psc-projects=ALLOWED_PROJECT_LIST

更改下列內容:

  • INSTANCE_ID:要建立的執行個體 ID。開頭須為小寫英文字母,可以使用小寫英文字母、數字和連字號。

  • REGION_ID:執行個體所在的區域。

  • CLUSTER_ID:先前建立的叢集 ID。

  • PROJECT_ID:建立叢集的專案 ID。

  • CPU_COUNT:執行個體所需的 vCPU 數量。

    • 您必須指定 cpu_count 或 machine_type。
    • 如果只提供 cpu_count,系統會建立 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 和 cpu_count,cpu_count 值必須與 machine_type 中指定的 vCPU 數量一致。舉例來說,如果 machine_type 為 n2-highmem-4,則必須將 cpu_count 設為 4。

  • MACHINE_TYPE:從支援的機型清單中選取,例如 n2-highmem-4、c4-highmem-4-lssd 或 c4a-highmem-4-lssd。詳情請參閱「選擇 AlloyDB 機型」。

    同時使用 machine_type 和 cpu_count 時,cpu_count 和 machine_type 中的值必須相符。舉例來說,如果 machine_type 為 n2-highmem-4,則必須將 cpu_count 設為 4。

  • ALLOWED_PROJECT_LIST:(選用) 如果您使用 Private Service Connect,ALLOWED_PROJECT_LIST 是以逗號分隔的專案 ID 清單,或您要允許存取執行個體的專案編號。

Terraform

建立叢集和主要執行個體

如要建立叢集及其主要執行個體,請使用 Terraform 資源。

下列程式碼片段會根據 AlloyDB 執行個體完整範例,建立叢集和主要執行個體:

resource "google_alloydb_instance" "default" {
  cluster       = google_alloydb_cluster.default.name
  instance_id   = "alloydb-instance"
  instance_type = "PRIMARY"
  machine_config {
    cpu_count = 2
  }
  depends_on = [google_service_networking_connection.vpc_connection]
}

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

data "google_project" "project" {}

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

resource "google_compute_global_address" "private_ip_alloc" {
  name          = "alloydb-cluster"
  address_type  = "INTERNAL"
  purpose       = "VPC_PEERING"
  prefix_length = 16
  network       = google_compute_network.default.id
}

resource "google_service_networking_connection" "vpc_connection" {
  network                 = google_compute_network.default.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.private_ip_alloc.name]
}

這個範例會建立 N2 執行個體。如需其他支援的機器類型清單 (例如 n2-highmem-4、c4-highmem-4-lssd 或 c4a-highmem-4-lssd),請參閱「選擇 AlloyDB 機器類型」。

準備 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 中加入私密或個人識別資訊。叢集名稱不必包含專案 ID。系統會在適當情況下自動執行這項操作,例如在記錄檔中。

如要傳送要求,請將要求主體儲存在名為 cluster_request.json 的檔案中:

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

請依指示取代下列項目:

  • DATABASE_VERSION:資料庫版本的列舉字串,例如 POSTGRES_17。
  • 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/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters?cluster_id=CLUSTER_ID   -d @cluster_request.json

建立主要執行個體

這個範例會建立主要執行個體。如需這項呼叫的完整參數清單,請參閱「方法:projects.locations.clusters.instances.create」。如要瞭解叢集設定,請參閱「查看叢集和執行個體設定」。

叢集 ID 會對外顯示,因此請勿在其中加入私密或個人識別資訊。您不必在叢集名稱中加入專案 ID,因為系統會在適當情況下自動加入,例如在記錄檔中。

如要傳送要求,請將下列要求主體儲存在名為 instance_request.json 的檔案中。

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

請替換下列項目:

  • VCPU_COUNT:要建立的執行個體上可見的 CPU 核心數量。

上述範例會建立 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_config": {
  "machine_type": "MACHINE_TYPE"
}

將 MACHINE_TYPE 替換為支援的機器類型,例如 n2-highmem-4、c4-highmem-4-lssd 或 c4a-highmem-4-lssd。如要進一步瞭解支援的機型,請參閱「選擇 AlloyDB 機型」。

請使用下列 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/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances?instance_id=INSTANCE_ID   -d @instance_request.json

複製運作中的叢集

如要建立有效叢集的複製版本,其中包含所有來源叢集資料的副本,並在相同區域中執行,請對該叢集執行時間點復原。指定時間點時,可以選擇非常接近當下的時間,例如當前分鐘的第一秒。

這項程序只會將來源叢集的資料複製到複製項目,不會複製來源叢集的任何設定。如要使用 CMEK 加密複製資料,即使來源叢集的資料已使用 CMEK 加密,您仍須在時間點復原指令中指定 CMEK 詳細資料。建立新叢集後,您需要新增執行個體、資料庫旗標、備份排程,以及其他必要設定,以符合需求。

透過這種方式建立的叢集會獨立於來源存在,且在初始複製完成後,其資料與來源叢集的資料沒有任何關係。如要建立次要叢集,自動追蹤及複製來源叢集中的資料變更,請參閱「關於跨區域複製」。

建立具有特定 IP 位址範圍的叢集

AlloyDB 使用私人服務連線,允許叢集的內部資源彼此通訊。建立叢集前,虛擬私有雲網路必須至少包含一個已設定私人服務存取連線的 IP 位址範圍。

使用 C4A Axion 型機器系列的注意事項

AlloyDB 提供 C4A 機器系列,採用 Google 自訂的 Arm 架構處理器 Google Axion。C4A 虛擬機器 (VM) 提供預先定義的設定,可選擇 1、2、4、8、16、32、48、64 和 72 個 vCPU,最多可搭載 576 GB 的 DDR5 (Double Data Rate 5) 記憶體。

選擇 C4A 時,請注意下列事項:

  • 如要將現有 N2 執行個體切換為 C4A 執行個體,請使用 Google Cloud 控制台、gcloud CLI、Terraform 或 API 修改目前執行個體的 machine_type。
  • 請勿刪除 N2 執行個體,並在同一個叢集中建立新的 C4A 執行個體。

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 類型,僅供開發和測試之用。如為實際工作環境工作負載,請選擇兩個以上的 vCPU。

選擇 1 個 vCPU 時,請注意下列限制:

  • 1 個 vCPU 搭配 8 GB 記憶體,不支援超高速快取。
  • 如果開發和沙箱環境的資料庫較小 (數十 GB),建議採用 1 個 vCPU 的設定。如果是較大的資料庫和正式環境工作負載,建議使用 2 個以上的 vCPU。
  • 您可以設定高可用性 (HA),但我們不提供運作時間服務水準協議。
  • 如要瞭解哪些區域可部署 1 個 vCPU,請參閱「支援 C4A 的區域」。

後續步驟