本頁說明如何自訂 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 設定檔,請按照下列步驟操作:
- 在資料庫的資料目錄 (
$PGDATA) 中找出postgresql.conf檔案。 停用 AlloyDB Omni 遙測功能。
omni_enable_telemetry = off
如要套用變更,請重新啟動 AlloyDB Omni 容器。 遙測代理程式會停止收集使用指標,並停止傳送給 Google。
使用 ALTER SYSTEM 在執行階段設定遙測旗標
如要設定遙測旗標並在重新啟動後保留變更,請按照下列步驟操作:
使用
psql連線至 AlloyDB Omni 執行個體:psql -h HOST -U USER -d DATABASE
請替換下列項目:
HOST:AlloyDB Omni 執行個體的主機名稱或 IP 位址,例如127.0.0.1。USER:您要連線的資料庫使用者,例如postgres。DATABASE:您要連線的資料庫,例如postgres。
執行下列指令:
ALTER SYSTEM SET omni_enable_telemetry = 'off';
重新載入設定或重新啟動執行個體。在某些容器設定中,您可能需要重新啟動執行個體,確保背景工作站完全採用變更。
SELECT pg_reload_conf();
遙測代理程式會停止收集使用指標,並停止傳送給 Google。
啟用遙測資訊回報功能
如果您先前停用了 AlloyDB Omni 遙測功能,可以將 omni_enable_telemetry 旗標設為 on,重新啟用這項功能。如要啟用遙測代理程式,請在 postgresql.conf 檔案中設定標記,或使用 ALTER SYSTEM 在執行階段設定標記。
在 postgresql.conf 檔案中設定遙測旗標
- 在資料庫的資料目錄 (
$PGDATA) 中找出postgresql.conf檔案。 設定下列行:
omni_enable_telemetry = on
如要套用變更,請重新啟動 AlloyDB Omni 容器。
使用 ALTER SYSTEM 在執行階段設定遙測旗標
- 使用
psql連線至 AlloyDB Omni 執行個體。 執行下列指令:
ALTER SYSTEM SET omni_enable_telemetry = 'on';
如要套用變更,請重新啟動 AlloyDB Omni 容器。
docker restart CONTAINER_NAME
請將下列項目改為對應的值:
CONTAINER_NAME:AlloyDB Omni 容器的名稱,例如my-omni-1。
檢查 AlloyDB Omni 遙測狀態
您可以檢查 AlloyDB Omni 遙測代理程式的狀態,包括是否已啟用或正在執行。您也可以檢查遙測代理程式活動。
檢查遙測代理程式是否已啟用或停用
如要檢查遙測設定的狀態,請按照下列步驟操作:
- 連線至執行個體。
- 執行以下指令:
SHOW omni_enable_telemetry;
輸出內容會傳回 on 或 off,視您是否停用或啟用 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:使用17.5.0取得最新版 Debian 映像檔,或使用17.5.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:使用17.5.0取得最新版 Debian 映像檔,或使用17.5.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:使用17.5.0取得最新版 Debian 映像檔,或使用17.5.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:使用17.5.0取得最新版 Debian 映像檔,或使用17.5.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 陳述式,詳情請參閱「啟用擴充功能」。