AlloyDB Omni ディスク キャッシュでは、標準の PostgreSQL インメモリ共有バッファに加えて、ソリッド ステート ドライブ(SSD)などの高速ストレージにもバッファを保存できます。ディスク キャッシュを使用すると、データ ディレクトリが低速なストレージにある AlloyDB Omni インストールでデータの取得が高速化されます。
PostgreSQL の共有バッファと同様に、AlloyDB Omni ディスク キャッシュは永続的ではありません。つまり、キャッシュに保存されたデータは再起動時に失われます。
デフォルトでは、AlloyDB Omni ディスク キャッシュはファイル システムから報告されたすべてのストレージを使用します。データ キャッシュ用に予約するストレージの量は、omni_disk_cache_file_size
パラメータで定義できます。
AlloyDB Omni ディスク キャッシュを有効にする
コンテナ内の AlloyDB Omni でディスク キャッシュを有効にする手順は次のとおりです。
ディスクをプロビジョニングしてファイル システムを作成する
AlloyDB Omni ディスク キャッシュの場合、1 つのディスクまたは複数のディスクにファイル システムを作成し、AlloyDB Omni を使用してコンテナ内にマウントします。また、mdadm
や lvm
などのユーティリティを使用して、複数のディスクで容量をプールし、任意のファイル システムを使用することもできます。
次の手順では、NVMe SSD を使用する Ubuntu Compute Engine インスタンスで lvm
と ext4
を使用する方法を説明します。
使用可能なすべての物理デバイスからボリューム グループを作成します。
nvme_prefix="STORAGE_PREFIX" nvme_list=$(ls "$nvme_prefix"*) sudo vgcreate VOLUME_GROUP ${nvme_list}
次のように置き換えます。
STORAGE_PREFIX
: NVMe(Non-Volatile Memory Express)インターフェースを使用して仮想マシンにアタッチされるターゲット ローカル ディスクパスの接頭辞。たとえば、 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
次のように置き換えます。
CONTAINER_NAME
: 新しい AlloyDB Omni コンテナに割り当てる名前。例:my-omni
PASSWORD
: PostgreSQL データベースの root 管理者のパスワード。DATA_DIR
: AlloyDB Omni がデータ ディレクトリに使用するファイル システムのパス。CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
: ホストマシンのマウント ポイントにマッピングされる AlloyDB Omni コンテナ内のキャッシュ ディレクトリ。たとえば、コンテナ内のキャッシュ ディレクトリの値(OMNI_DISK_CACHE_DIRECTORY
に似た/omni_disk_cache_directory
または/disk/cache/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
次のように置き換えます。
CONTAINER_NAME
: 新しい AlloyDB Omni コンテナに割り当てる名前。例:my-omni
PASSWORD
: PostgreSQL データベースの root 管理者のパスワード。CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
: ホストマシンのマウント ポイントにマッピングされる AlloyDB Omni コンテナ内のキャッシュ ディレクトリ。たとえば、コンテナ内のキャッシュ ディレクトリの値(OMNI_DISK_CACHE_DIRECTORY
に似た/omni_disk_cache_directory
または/disk/cache/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 ...
メッセージが表示されます。