自訂 AlloyDB Omni 安裝作業

選取說明文件版本:

本頁說明如何自訂 AlloyDB Omni 安裝作業。AlloyDB Omni 是透過支援不同形式自訂作業的容器映像檔部署。本頁列出一些常見的自訂項目。

啟用及停用 AlloyDB Omni 遙測功能

AlloyDB Omni 遙測技術會實作輕量型用戶端代理程式,只會在 AlloyDB Omni 容器映像檔中執行。這個代理程式會定期收集一組基本的匿名指標,並傳送至 Google 管理的端點。

AlloyDB Omni 是免費提供的可下載產品,因此這項遙測功能會向 Google 提供重要且非個人識別資訊 (非 PII) 的指標,包括執行個體的一般採用和部署環境。這類資料有助於我們制定產品開發策略,並決定支援服務的優先順序。

收集的指標包括:

  • 不重複的安裝 ID (假名 UUID)
  • AlloyDB Omni 版本和 PostgreSQL 主要版本
  • 主機系統資訊,例如 CPU 數量、RAM 和正常運作時間

停用遙測資訊回報功能

如要防止遙測代理程式執行及回報使用指標,請將 PostgreSQL 設定參數 omni_enable_telemetry 設為 off。如要停用遙測代理程式,請在 postgresql.conf 檔案中設定遙測標記,或使用 ALTER SYSTEM 在執行階段設定標記。

在 postgresql.conf 檔案中設定遙測旗標

如要在容器的永久資料目錄中修改 PostgreSQL 設定檔,請按照下列步驟操作:

  1. 在資料庫的資料目錄 ($PGDATA) 中找出 postgresql.conf 檔案。
  2. 停用 AlloyDB Omni 遙測功能。

    omni_enable_telemetry = off
    
  3. 如要套用變更,請重新啟動 AlloyDB Omni 容器。 遙測代理程式會停止收集使用指標,並停止傳送給 Google。

使用 ALTER SYSTEM 在執行階段設定遙測旗標

如要設定遙測旗標並在重新啟動後保留變更,請按照下列步驟操作:

  1. 使用 psql 連線至 AlloyDB Omni 執行個體:

    psql -h HOST -U USER -d DATABASE
    

    請替換下列項目:

    • HOST:AlloyDB Omni 執行個體的主機名稱或 IP 位址,例如 127.0.0.1
    • USER:您要連線的資料庫使用者,例如 postgres
    • DATABASE:您要連線的資料庫,例如 postgres
  2. 執行下列指令:

    ALTER SYSTEM SET omni_enable_telemetry = 'off';
    
  3. 重新載入設定或重新啟動執行個體。在某些容器設定中,您可能需要重新啟動執行個體,確保背景工作站完全採用變更。

    SELECT pg_reload_conf();
    

    遙測代理程式會停止收集使用指標,並停止傳送給 Google。

啟用遙測資訊回報功能

如果您先前停用了 AlloyDB Omni 遙測功能,可以將 omni_enable_telemetry 旗標設為 on,重新啟用這項功能。如要啟用遙測代理程式,請在 postgresql.conf 檔案中設定標記,或使用 ALTER SYSTEM 在執行階段設定標記。

在 postgresql.conf 檔案中設定遙測旗標

  1. 在資料庫的資料目錄 ($PGDATA) 中找出 postgresql.conf 檔案。
  2. 設定下列行:

    omni_enable_telemetry = on
    
  3. 如要套用變更,請重新啟動 AlloyDB Omni 容器。

使用 ALTER SYSTEM 在執行階段設定遙測旗標

  1. 使用 psql 連線至 AlloyDB Omni 執行個體。
  2. 執行下列指令:

    ALTER SYSTEM SET omni_enable_telemetry = 'on';
    
  3. 如要套用變更,請重新啟動 AlloyDB Omni 容器。

    docker restart CONTAINER_NAME
    

    請將下列項目改為對應的值:

    • CONTAINER_NAME:AlloyDB Omni 容器的名稱,例如 my-omni-1

檢查 AlloyDB Omni 遙測狀態

您可以檢查 AlloyDB Omni 遙測代理程式的狀態,包括是否已啟用或正在執行。您也可以檢查遙測代理程式活動。

檢查遙測代理程式是否已啟用或停用

如要檢查遙測設定的狀態,請按照下列步驟操作:

  1. 連線至執行個體。
  2. 執行以下指令:
SHOW omni_enable_telemetry;

輸出內容會傳回 onoff,視您是否停用或啟用 AlloyDB Omni 遙測功能而定。

檢查遙測代理程式是否正在執行

如要檢查遙測代理程式是否正在執行,請在容器主機中執行下列指令:

docker top CONTAINER_NAME

請將下列項目改為對應的值:

  • CONTAINER_NAME:AlloyDB Omni 容器的名稱,例如 my-omni-1

如果已啟用並執行遙測功能,輸出內容會包含一行文字 postgres: omni telemetry worker

檢查遙測代理程式活動

如要檢查遙測代理程式的活動,請在容器主機中執行下列指令:

docker logs CONTAINER_NAME 2>&1 | grep telemetry

請將下列項目改為對應的值:

  • CONTAINER_NAME:AlloyDB Omni 容器的名稱,例如 my-omni-1

如果遙測代理程式正在執行,記錄檔會包含類似以下的訊息:

LOG:  [telemetry_agent_worker.cc:143]  Started telemetry worker
LOG:  [telemetry_agent_worker.cc:161]  Running telemetry reporting agent
telemetry_agent: Uploading telemetry data to https://cloud.google.com/log.

掛接外部資料目錄

根據預設,快速入門:安裝 AlloyDB Omni 中的指令會將資料庫資料儲存在 Docker 或 Podman 管理的區域中。這樣做方便您開始使用,但會導致資料目錄難以尋找和使用。您可以改為設定繫結掛接,將資料目錄對應至磁碟上的已知位置。

Docker

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

Docker

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

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

請替換下列變數:

  • CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1
  • NEW_PASSWORD:新容器建立後,系統會為容器的 postgres 使用者指派密碼。
  • DATA_DIR:儲存資料的主機目錄路徑。
  • HOST_PORT:容器應將自己的通訊埠 5432 發布至主機的 TCP 通訊埠。如要在主機上使用 PostgreSQL 預設通訊埠,請指定 5432
  • IMAGE_TAG:使用 16.9.0 取得最新版 Debian 映像檔,或使用 16.9.0-ubi 取得最新版 UBI 映像檔。

啟用 ulimit

ulimit 參數會指定 Docker 或 Podman 容器可使用的程序限制。為達到最佳效能,建議您設定下列 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 -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

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

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

請替換下列變數:

  • CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1
  • NEW_PASSWORD:新容器建立後,系統會為容器的 postgres 使用者指派密碼。
  • HOST_PORT:容器應將自己的通訊埠 5432 發布至主機的 TCP 通訊埠。如要在主機上使用 PostgreSQL 預設通訊埠,請指定 5432
  • IMAGE_TAG:使用 AlloyDB Omni 取得最新版 Debian 映像檔,或使用 AlloyDB Omni-ubi 取得最新版 UBI 映像檔。

指定記錄驅動程式

根據預設,Docker 和 Podman 不會執行記錄輪替。這可能會占用大量磁碟空間,最終導致磁碟空間不足。如要使用其他記錄驅動程式,可以指定 --log-driver 欄位。舉例來說,如要記錄到 journald

Docker

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

Docker

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

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

請替換下列變數:

  • CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1
  • NEW_PASSWORD:新容器建立後,系統會為容器的 postgres 使用者指派密碼。
  • HOST_PORT:容器應將自己的通訊埠 5432 發布至主機的 TCP 通訊埠。如要在主機上使用 PostgreSQL 預設通訊埠,請指定 5432
  • IMAGE_TAG:使用 16.9.0 取得最新版 Debian 映像檔,或使用 16.9.0-ubi 取得最新版 UBI 映像檔。

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

此外,您也可以使用 PostgreSQL 設定記錄。詳情請參閱「設定 AlloyDB Omni 記錄檔輪替」。

掛接共用記憶體磁碟區

如果您打算搭配 AlloyDB Omni 使用 AlloyDB 直欄式引擎,建議您為 AlloyDB Omni 容器提供共用記憶體。視主機作業系統而定,方法會有所不同,如下列範例所示。

Linux

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

Docker

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

Docker

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

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v /dev/shm:/dev/shm \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v /dev/shm:/dev/shm \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

請替換下列變數:

  • CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1
  • NEW_PASSWORD:新容器建立後,系統會為容器的 postgres 使用者指派密碼。
  • HOST_PORT:容器應將自己的通訊埠 5432 發布至主機的 TCP 通訊埠。如要在主機上使用 PostgreSQL 預設通訊埠,請指定 5432
  • IMAGE_TAG:使用 16.9.0 取得最新版 Debian 映像檔,或使用 16.9.0-ubi 取得最新版 UBI 映像檔。

macOS

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

Docker

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

Docker

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

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

請替換下列變數:

  • CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1
  • NEW_PASSWORD:新容器建立後,系統會為容器的 postgres 使用者指派密碼。
  • SHARED_MEMORY_SIZE:要為容器中的 /dev/shm 設定的大小,格式請參閱「執行容器」一文。舉例來說,如要指定 1 GB,請使用 1g 值。
  • HOST_PORT:容器應將自己的通訊埠 5432 發布至主機的 TCP 通訊埠。如要在主機上使用 PostgreSQL 預設通訊埠,請指定 5432
  • IMAGE_TAG:使用 16.9.0 取得最新版 Debian 映像檔,或使用 16.9.0-ubi 取得最新版 UBI 映像檔。

建議您將共用記憶體大小設為至少是資料庫 google_job_scheduler.max_parallel_workers_per_job 旗標值的 250 倍 (以 MB 為單位)。如要進一步瞭解資料欄引擎,請參閱「在 AlloyDB Omni 中設定資料欄引擎」。

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

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

啟用擴充功能

如需 AlloyDB Omni 提供的擴充功能清單,請參閱「支援的資料庫擴充功能」。雖然 AlloyDB Omni 未內建 PostGIS 和 Orafce,但您可以按照下列操作說明安裝這兩者:

如要啟用已安裝的擴充功能,請使用標準 PostgreSQL CREATE EXTENSION 陳述式,詳情請參閱「啟用擴充功能」。