除了標準 PostgreSQL 記憶體內建的共用緩衝區,AlloyDB Omni 磁碟快取還可將緩衝區儲存在固態硬碟 (SSD) 等快速儲存空間。如果 AlloyDB Omni 安裝作業的資料目錄位於較慢的儲存空間,磁碟快取可加快資料擷取速度。
與 PostgreSQL 共用緩衝區類似,AlloyDB Omni 磁碟快取不會保留資料,因此快取資料會在重新啟動時遺失。
根據預設,AlloyDB Omni 磁碟快取會使用檔案系統回報的所有儲存空間。您可以使用 omni_disk_cache_file_size
參數,定義保留用於快取資料的儲存空間量。
啟用 AlloyDB Omni 磁碟快取
如要在容器中為 AlloyDB Omni 啟用磁碟快取,請按照下列步驟操作。
佈建磁碟並建立檔案系統
如要使用 AlloyDB Omni 磁碟快取,請在磁碟或多個磁碟上建立檔案系統,然後掛接到 AlloyDB Omni 容器中。此外,您可以使用 mdadm
或 lvm
等公用程式,將多個磁碟的容量集中在一起,並使用任何檔案系統。
下列步驟示範如何在 Ubuntu Compute Engine 執行個體上使用 NVMe SSD,執行 lvm
和 ext4
。
從所有可用的實體裝置建立磁碟區群組:
nvme_prefix="STORAGE_PREFIX" nvme_list=$(ls "$nvme_prefix"*) sudo vgcreate VOLUME_GROUP ${nvme_list}
更改下列內容:
STORAGE_PREFIX
:使用非揮發性記憶體高速 (NVMe) 介面連結至虛擬機器的目標本機磁碟路徑前置字元,例如在 Google Cloud上,NVMe 裝置路徑一律以/dev/nvme0n
開頭。VOLUME_GROUP
:SSD 組合所在的磁碟區群組名稱,例如omni-disk-cache-volume
。
-
如要從上一步的磁碟區群組可用容量建立邏輯磁碟區,請使用下列指令:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
將
LOGICAL_VOLUME
替換為 LVM 視為分割區的邏輯磁碟區名稱,例如omni_disk_cache_device
。 - 在邏輯磁碟區上建立
ext4
檔案系統。如有需要,您可以指定其他ext4
選項,但須遵守資料安全規定。sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
如要在主機上建立當做掛接點的目錄並掛接檔案系統,請使用下列指令:
sudo mkdir /OMNI_DISK_CACHE_DIRECTORY sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_DISK_CACHE_DIRECTORY
將
OMNI_DISK_CACHE_DIRECTORY
替換為目錄名稱或目錄路徑 (做為掛接點),例如omni_disk_cache_directory
。
在 AlloyDB Omni 內掛接快取目錄
為在容器中執行的 AlloyDB Omni 啟用磁碟快取前,您必須在 AlloyDB Omni 內掛接快取目錄。
如要瞭解如何從 Docker 映像檔安裝 AlloyDB Omni 並進行自訂,請參閱「自訂 AlloyDB Omni 安裝作業」。
如要在執行 AlloyDB Omni 的 Docker 容器內掛接 OMNI_DISK_CACHE_DIRECTORY
,請使用下列指令:
Docker
sudo docker run --name CONTAINER_NAME
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_DISK_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d google/alloydbomni
更改下列內容:
- :要指派給新 AlloyDB Omni 容器的名稱,例如
my-omni
。CONTAINER_NAME
PASSWORD
:PostgreSQL 資料庫根管理員的密碼。DATA_DIR
:您希望 AlloyDB Omni 用於資料目錄的檔案系統路徑。- :AlloyDB Omni 容器內的快取目錄,會對應至主機上的掛接點,例如根據容器內快取目錄的值,可能是
/omni_disk_cache_directory
(類似OMNI_DISK_CACHE_DIRECTORY
) 或/disk/cache/inside/container
。CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Podman
podman run --name CONTAINER_NAME
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_DISK_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d docker.io/google/alloydbomni
更改下列內容:
- :要指派給新 AlloyDB Omni 容器的名稱,例如
my-omni
。CONTAINER_NAME
PASSWORD
:PostgreSQL 資料庫根管理員的密碼。- :AlloyDB Omni 容器內的快取目錄,會對應至主機上的掛接點,例如根據容器內快取目錄的值,可能是
/omni_disk_cache_directory
(類似OMNI_DISK_CACHE_DIRECTORY
) 或/disk/cache/inside/container
。CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
如要將完整存取權授予已掛接的 OMNI_DISK_CACHE_DIRECTORY
,請使用下列指令:
Docker
sudo docker exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER sudo docker exec -it CONTAINER_NAME chmod -R a+rw /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Podman
sudo podman exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER sudo podman exec -it CONTAINER_NAME chmod -R a+rw /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
啟用 AlloyDB Omni 磁碟快取
如要為資料庫啟用 AlloyDB Omni 磁碟快取,請先確認已掛接的快取目錄可從 Docker 容器內部存取,然後設定適當的 Grand Unified Configuration (GUC) 參數。
-
如要以超級使用者身分連線至容器化 AlloyDB Omni 資料庫,請使用下列指令:
Docker
sudo docker exec -it CONTAINER_NAME psql -h localhost -U postgres
Podman
sudo podman exec -it CONTAINER_NAME psql -h localhost -U postgres
-
如要設定參數值,請在 AlloyDB Omni 資料庫中使用下列指令:
alter system set omni_disk_cache_enabled=on; alter system set omni_disk_cache_directory='/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER';
-
根據預設,AlloyDB Omni 會使用檔案系統中的所有可用空間。如有需要,您可以使用
omni_disk_cache_file_size
參數覆寫預設值。alter system set omni_disk_cache_file_size=SIZE_IN_MB;
-
如要讓快取設定參數變更生效,請重新啟動執行中的 AlloyDB Omni 容器:
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
驗證磁碟快取設定
啟用 AlloyDB Omni 磁碟快取後,請使用 iotop
或 iostat
等公用程式監控磁碟的讀取和寫入活動,確認磁碟快取是否遭到存取。
此外,您也可以檢查 AlloyDB Omni 磁碟快取是否已開啟。
如要驗證容器中 AlloyDB Omni 的磁碟快取設定,請按照下列步驟操作:
Docker
sudo docker logs CONTAINER_NAME 2>&1 | grep "opened omni disk cache"
Podman
sudo podman logs CONTAINER_NAME 2>&1 | grep "opened omni disk cache"
如果磁碟快取設定正確,記錄檔中會顯示「Successfully opened omni disk cache ...」訊息。