自訂 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:使用 17.5.0 取得最新 Debian 映像檔,或使用 17.5.0-ubi9 取得最新 UBI 映像檔。

使用 SELinux 時掛接外部資料目錄

如果已啟用 SELinux,且模式設為 enforcing,嘗試掛接外部資料目錄時會發生權限錯誤。如要在使用 SELinux 時掛接外部資料目錄,請完成下列操作說明:

Docker

  1. 如果 AlloyDB Omni 容器正在執行,請停止執行。
    docker stop CONTAINER_NAME
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  2. 將 SELinux 模式設為 permissive。這樣一來,您就能執行容器,並找出掛接外部資料目錄所需的存取權詳細資料。
    setenforce 0
  3. 使用外部資料目錄執行容器。
    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
    
    請替換下列變數:
    • 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-ubi9 取得最新 UBI 映像檔。
  4. 如果尚未安裝,請透過套件管理工具安裝 policycoreutils-python-utils。這個套件提供管理 SELinux 政策所需的公用程式。
  5. 為外部資料目錄設定適當的 SELinux 環境。
    semanage fcontext -a -t container_file_t "DATA_DIR"
    restorecon -Rv "DATA_DIR"
    取代下列變數:
    • DATA_DIR:儲存資料的主機目錄路徑。
  6. 使用 ausearch 取得其他權限要求相關資訊。
    ausearch -c 'postgres' --raw > postgres.avc
  7. 根據 AlloyDB Omni 容器和 ausearch 權限資訊,建立 SELinux 安全性設定檔。
    docker inspect CONTAINER_NAME | udica --append-rules postgres.avc CONTAINER_NAME
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  8. 載入 SELinux 模組。
    semodule -i CONTAINER_NAME.cil /usr/share/udica/templates/{base_container.cil,net_container.cil}
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  9. 啟用「mmap」。
    setsebool -P domain_can_mmap_files 1
  10. 停止並移除 AlloyDB Omni 容器。
    docker stop CONTAINER_NAME && docker rm CONTAINER_NAME
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  11. 將 SELinux 模式設為 enforcing
    setenforce 1
  12. 重新建立 AlloyDB Omni 容器。
    docker run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -p HOST_PORT:5432 \
    --restart=always \
    --security-opt label=type:CONTAINER_NAME.process \
    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-ubi9 取得最新 UBI 映像檔。

Docker

  1. 如果 AlloyDB Omni 容器正在執行,請停止執行。
    docker stop CONTAINER_NAME
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  2. 將 SELinux 模式設為 permissive。這樣一來,您就能執行容器,並找出掛接外部資料目錄所需的存取權詳細資料。
    sudo setenforce 0
  3. 使用外部資料目錄執行容器。
    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
    
    請替換下列變數:
    • 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-ubi9 取得最新 UBI 映像檔。
  4. 如果尚未安裝,請透過套件管理工具安裝 policycoreutils-python-utils。這個套件提供管理 SELinux 政策所需的公用程式。
  5. 如果外部資料目錄不在主目錄中,請設定適當的 SELinux 環境。
    sudo semanage fcontext -a -t container_file_t "DATA_DIR"
    sudo restorecon -Rv "DATA_DIR"
    取代下列變數:
    • DATA_DIR:儲存資料的主機目錄路徑。
  6. 使用 ausearch 取得其他權限要求相關資訊。
    sudo ausearch -c 'postgres' --raw > postgres.avc
  7. 根據 AlloyDB Omni 容器和 ausearch 權限資訊,建立 SELinux 安全性設定檔。
    docker inspect CONTAINER_NAME | sudo udica --append-rules postgres.avc CONTAINER_NAME
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  8. 載入 SELinux 模組。
    sudo semodule -i CONTAINER_NAME.cil /usr/share/udica/templates/{base_container.cil,net_container.cil}
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  9. 啟用「mmap」。
    sudo setsebool -P domain_can_mmap_files 1
  10. 停止並移除 AlloyDB Omni 容器。
    docker stop CONTAINER_NAME && docker rm CONTAINER_NAME
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  11. 將 SELinux 模式設為 enforcing
    sudo setenforce 1
  12. 重新建立 AlloyDB Omni 容器。
    docker run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -p HOST_PORT:5432 \
    --restart=always \
    --security-opt label=type:CONTAINER_NAME.process \
    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-ubi9 取得最新 UBI 映像檔。

Podman

  1. 如果 AlloyDB Omni 容器正在執行,請停止執行。
    podman stop CONTAINER_NAME
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  2. 將 SELinux 模式設為 permissive。這樣一來,您就能執行容器,並找出掛接外部資料目錄所需的存取權詳細資料。
    setenforce 0
  3. 使用外部資料目錄執行容器。
    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-ubi9 取得最新 UBI 映像檔。
  4. 如果尚未安裝,請透過套件管理工具安裝 policycoreutils-python-utils。這個套件提供管理 SELinux 政策所需的公用程式。
  5. 為外部資料目錄設定適當的 SELinux 環境。
    semanage fcontext -a -t container_file_t "DATA_DIR"
    restorecon -Rv "DATA_DIR"
    取代下列變數:
    • DATA_DIR:儲存資料的主機目錄路徑。
  6. 使用 ausearch 取得其他權限要求相關資訊。
    ausearch -c 'postgres' --raw > postgres.avc
  7. 根據 AlloyDB Omni 容器和 ausearch 權限資訊,建立 SELinux 安全性設定檔。
    podman inspect CONTAINER_NAME | udica --append-rules postgres.avc CONTAINER_NAME
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  8. 載入 SELinux 模組。
    semodule -i CONTAINER_NAME.cil /usr/share/udica/templates/{base_container.cil,net_container.cil}
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  9. 啟用「mmap」。
    setsebool -P domain_can_mmap_files 1
  10. 停止並移除 AlloyDB Omni 容器。
    podman stop CONTAINER_NAME && docker rm CONTAINER_NAME
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  11. 將 SELinux 模式設為 enforcing
    setenforce 1
  12. 重新建立 AlloyDB Omni 容器。
    podman run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -p HOST_PORT:5432 \
    --restart=always \
    --security-opt label=type:CONTAINER_NAME.process \
    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-ubi9 取得最新 UBI 映像檔。

Podman

  1. 如果 AlloyDB Omni 容器正在執行,請停止執行。
    podman stop CONTAINER_NAME
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  2. 將 SELinux 模式設為 permissive。這樣一來,您就能執行容器,並找出掛接外部資料目錄所需的存取權詳細資料。
    sudo setenforce 0
  3. 使用外部資料目錄執行容器。
    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-ubi9 取得最新 UBI 映像檔。
  4. 如果尚未安裝,請透過套件管理工具安裝 policycoreutils-python-utils。這個套件提供管理 SELinux 政策所需的公用程式。
  5. 為外部資料目錄設定適當的 SELinux 環境。
    sudo semanage fcontext -a -t container_file_t "DATA_DIR"
    sudo restorecon -Rv "DATA_DIR"
    取代下列變數:
    • DATA_DIR:儲存資料的主機目錄路徑。
  6. 使用 ausearch 取得其他權限要求相關資訊。
    sudo ausearch -c 'postgres' --raw > postgres.avc
  7. 根據 AlloyDB Omni 容器和 ausearch 權限資訊,建立 SELinux 安全性設定檔。
    podman inspect CONTAINER_NAME | sudo udica --append-rules postgres.avc CONTAINER_NAME
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  8. 載入 SELinux 模組。
    sudo semodule -i CONTAINER_NAME.cil /usr/share/udica/templates/{base_container.cil,net_container.cil}
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  9. 啟用「mmap」。
    sudo setsebool -P domain_can_mmap_files 1
  10. 停止並移除 AlloyDB Omni 容器。
    podman stop CONTAINER_NAME && docker rm CONTAINER_NAME
    取代下列變數:
    • CONTAINER_NAME:您為容器使用的名稱。例如 my-omni-1
  11. 將 SELinux 模式設為 enforcing
    sudo setenforce 1
  12. 重新建立 AlloyDB Omni 容器。
    podman run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -p HOST_PORT:5432 \
    --restart=always \
    --security-opt label=type:CONTAINER_NAME.process \
    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-ubi9 取得最新 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:主機上的 TCP 通訊埠,容器應將自己的通訊埠 5432 發布至該通訊埠。如要在主機上使用 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:主機上的 TCP 通訊埠,容器應將自己的通訊埠 5432 發布至該通訊埠。如要在主機上使用 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:主機上的 TCP 通訊埠,容器應將自己的通訊埠 5432 發布至該通訊埠。如要在主機上使用 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:主機上的 TCP 通訊埠,容器應將自己的通訊埠 5432 發布至該通訊埠。如要在主機上使用 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 陳述式,詳情請參閱「啟用擴充功能」。