自訂 AlloyDB Omni 安裝作業

選取說明文件版本:

AlloyDB Omni 是透過 Docker 映像檔部署,可進行不同形式的自訂。本頁列出一些常用的自訂項目。

如要快速開始使用 AlloyDB Omni,並採用預設設定,請參閱「快速入門導覽課程:AlloyDB Omni」。

事前準備

下表列出 AlloyDB Omni 的建議硬體和軟體設定。

OS/平台 建議的硬體設定 建議的軟體設定
Linux
  • 支援 AVX2 的 x86-64 或 Arm (*) CPU
  • 分配給 AlloyDB Omni 的每個 CPU 需有 8 GB RAM
  • 20 GB 以上的磁碟空間
  • 以 Debian 為基礎的作業系統 (Ubuntu 等) 或 RHEL 9
  • Linux 核心 6.1 以上版本,或支援 MADV_COLLAPSE 和 MADV_POPULATE_WRITE 指令的 5.3 以下版本
  • 已啟用 Cgroupsv2
  • Docker Engine 25.0.0 以上版本或 Podman 5.0.0 以上版本
  • macOS
  • 支援 AVX2 的 Intel CPU 或 M 晶片
  • 為 AlloyDB Omni 分配的每個 CPU 提供 8 GB 的 RAM
  • 20 GB 以上的磁碟空間
  • Docker Desktop 4.30 以上版本
  • (*) Arm 支援功能目前為預先發布版。

    AlloyDB Omni 會在容器中執行。安裝 AlloyDB Omni 前,請先在機器上安裝 Docker 或 Podman 等容器執行階段。

    本文提供 Podman 指令,適用於在已停用安全增強式 Linux (SELinux) 的無根容器上執行。

    單一伺服器

    掛接外部資料目錄

    根據預設,「快速入門導覽課程:安裝 AlloyDB Omni」中的指令會將資料庫資料儲存在 Docker 管理的區域。這項功能方便您快速上手,但難以找到及使用資料目錄。您可以改為設定繫結掛接,將資料目錄對應至磁碟上的已知位置。

    Docker

    docker run --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -p HOST_PORT:5432 -d google/alloydbomni:15.5.5

    更改下列內容:

    • CONTAINER_NAME:在主體機器的 Container Registry 中,指派給這個新 AlloyDB Omni 容器的名稱,例如 my-omni。

    • NEW_PASSWORD:新容器的 postgres 使用者在建立容器後獲派的密碼。

    • DATA_DIR:您希望 AlloyDB Omni 用於資料目錄的檔案系統路徑。

    • HOST_PORT:主機上的 TCP 通訊埠,容器會將通訊埠 5432 發布至該通訊埠。如要在主機上使用 PostgreSQL 預設通訊埠,請指定 5432。

    Podman

    podman run --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -p HOST_PORT:5432 -d google/alloydbomni:15.5.5

    更改下列內容:

    • CONTAINER_NAME:在主體機器的 Container Registry 中,指派給這個新 AlloyDB Omni 容器的名稱,例如 my-omni。

    • NEW_PASSWORD:新容器的 postgres 使用者在建立容器後獲派的密碼。

    • DATA_DIR:您希望 AlloyDB Omni 用於資料目錄的檔案系統路徑。

    • HOST_PORT:主機上的 TCP 通訊埠,容器會將通訊埠 5432 發布至該通訊埠。如要在主機上使用 PostgreSQL 預設通訊埠,請指定 5432。

    Podman

    podman run --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -p HOST_PORT:5432 -d google/alloydbomni:15.5.5

    更改下列內容:

    • CONTAINER_NAME:在主體機器的 Container Registry 中,指派給這個新 AlloyDB Omni 容器的名稱,例如 my-omni。

    • NEW_PASSWORD:新容器的 postgres 使用者在建立容器後獲派的密碼。

    • DATA_DIR:您希望 AlloyDB Omni 用於資料目錄的檔案系統路徑。

    • HOST_PORT:主機上的 TCP 通訊埠,容器會將通訊埠 5432 發布至該通訊埠。如要一併在主體機器使用 PostgreSQL 預設通訊埠,請指定 5432。

    啟用 ulimit

    ulimit 參數會指定 Docker 容器可使用的程序限制。為獲得最佳效能,建議您設定下列 ulimit:

    • nice=-20:-20:AlloyDB Omni 會調整程序優先順序,讓重要的 PostgreSQL 程序以較高優先順序執行。優先順序越高,程序可分配到的可用 CPU 資源就越多。如要調整程序優先順序,請指定 --ulimit=nice=-20:-20,這會移除 AlloyDB Omni 容器的限制。

    • memlock=-1:-1:AlloyDB Omni 會執行自動記憶體管理。設定 --ulimit=memlock=-1:-1 可讓資料庫更有效地控制記憶體頁面的交換方式,進而提升效能。

    Docker

    docker run --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    --ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
    -p HOST_PORT:5432 -d google/alloydbomni:15.5.5

    Podman

    podman run --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    --ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
    -p HOST_PORT:5432 -d google/alloydbomni:15.5.5

    指定記錄驅動程式

    根據預設,Docker 不會執行記錄檔輪替。這可能會占用大量磁碟空間,最終導致磁碟空間不足。您可以設定 Docker 使用其他記錄檔驅動程式。舉例來說,如要記錄到 journald,請執行下列指令:

    Docker

    docker run --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    --log-driver=journald \
    -p HOST_PORT:5432 -d google/alloydbomni:15.5.5

    Podman

    podman run --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    --log-driver=journald \
    -p HOST_PORT:5432 -d google/alloydbomni:15.5.5

    如要進一步瞭解 Docker 和記錄驅動程式,請參閱 Docker 說明文件「設定記錄驅動程式」。

    您也可以使用 PostgreSQL 設定記錄功能。詳情請參閱 PostgreSQL 說明文件的「Error reporting and logging」(錯誤報告和記錄) 一節。

    掛接共用記憶體磁碟區

    如果您打算搭配 AlloyDB Omni 使用 AlloyDB 資料欄引擎,建議您將共用記憶體提供給 AlloyDB Omni 容器。具體做法會因主機作業系統而異,請參閱下列範例。

    Linux

    如要讓容器使用共用記憶體,請掛接 /dev/shm:

    Docker

      docker run --name CONTAINER_NAME \
        -e POSTGRES_PASSWORD=NEW_PASSWORD \
        -p HOST_PORT:5432 \
        -v /dev/shm:/dev/shm \
        -d google/alloydbomni:15.5.5

    Podman

      podman run --name CONTAINER_NAME \
        -e POSTGRES_PASSWORD=NEW_PASSWORD \
        -p HOST_PORT:5432 \
        -v /dev/shm:/dev/shm \
        -d google/alloydbomni:15.5.5

    macOS

    如要讓容器使用共用記憶體,請加入 --shm-size 旗標:

    Docker

      docker run --name CONTAINER_NAME \
        -e POSTGRES_PASSWORD=NEW_PASSWORD \
        -p HOST_PORT:5432 \
        --shm-size=SHARED_MEMORY_SIZE \
        -d google/alloydbomni:15.5.5

    將 SHARED_MEMORY_SIZE 替換為要為容器上的 /dev/shm 設定的大小,格式請參閱「執行容器」一文。舉例來說,如要指定 1 GB,請使用 1g 值。

    Podman

      podman run --name CONTAINER_NAME \
        -e POSTGRES_PASSWORD=NEW_PASSWORD \
        -p HOST_PORT:5432 \
        --shm-size=SHARED_MEMORY_SIZE \
        -d google/alloydbomni:15.5.5

    請將 SHARED_MEMORY_SIZE 替換為要為容器上的 /dev/shm 設定的大小,格式如「執行容器」一文所述。舉例來說,如要指定 1 GB,請使用 1g 值。

    建議您將共用記憶體大小設為至少等於資料庫的 google_job_scheduler.max_parallel_workers_per_job 旗標值乘以 250 的百萬位元組數。如要進一步瞭解資料欄引擎,請參閱「在 AlloyDB Omni 中設定資料欄引擎」。

    舉例來說,如果 google_job_scheduler.max_parallel_workers_per_job 資料庫旗標設為預設值 2,建議您在啟動資料庫伺服器時,新增 --shm-size=500m 以上的旗標。

    如要進一步瞭解 --shm-size 旗標,請參閱「執行容器」。