このページでは、AlloyDB Omni のインストールをカスタマイズする方法について説明します。AlloyDB Omni のインストールはコンテナ イメージを使用してデプロイされますが、さまざまなカスタマイズ方法がサポートされています。このページでは、一般的なカスタマイズについて説明します。
AlloyDB Omni テレメトリーを有効または無効にする
AlloyDB Omni テレメトリーは、AlloyDB Omni コンテナ イメージでのみ実行される軽量クライアント エージェントを実装します。このエージェントは、基本的な仮名化された指標のセットを定期的に収集し、Google が管理するエンドポイントに送信します。
AlloyDB Omni は無料で提供されるダウンロード可能なプロダクトであるため、このテレメトリーは、実行中のインスタンスの一般的な導入環境とデプロイ環境に関する重要な非個人情報(非 PII)指標を Google に提供します。このデータは、プロダクト開発とサポートの優先順位付けに役立ちます。
収集される指標は次のとおりです。
- 一意のインストール 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;
AlloyDB Omni テレメトリーを無効にしたか有効にしたかに応じて、出力は on または off を返します。
テレメトリー エージェントが実行されているかどうかを確認する
テレメトリー エージェントが実行されているかどうかを確認するには、コンテナホストで次のコマンドを実行します。
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-1NEW_PASSWORD: 新しいコンテナのpostgresユーザーに作成後に割り当てられるパスワード。DATA_DIR: データが保存されているホスト ディレクトリ パス。HOST_PORT: コンテナが固有のポート5432を公開する、ホストマシン上の TCP ポート。ホストマシン上の PostgreSQL のデフォルト ポートも使用するには、5432を指定します。IMAGE_TAG: 最新の Debian イメージには17.5.0を使用し、最新の UBI イメージには17.5.0-ubiを使用します。
ulimits を有効にする
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-1NEW_PASSWORD: 新しいコンテナのpostgresユーザーに作成後に割り当てられるパスワード。HOST_PORT: コンテナが固有のポート5432を公開する、ホストマシン上の TCP ポート。ホストマシン上の PostgreSQL のデフォルト ポートも使用するには、5432を指定します。IMAGE_TAG: 最新の Debian イメージにはAlloyDB Omniを使用し、最新の UBI イメージにはAlloyDB Omni-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-1NEW_PASSWORD: 新しいコンテナのpostgresユーザーに作成後に割り当てられるパスワード。HOST_PORT: コンテナが固有のポート5432を公開する、ホストマシン上の TCP ポート。ホストマシン上の PostgreSQL のデフォルト ポートも使用するには、5432を指定します。IMAGE_TAG: 最新の Debian イメージには17.5.0を使用し、最新の UBI イメージには17.5.0-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-1NEW_PASSWORD: 新しいコンテナのpostgresユーザーに作成後に割り当てられるパスワード。HOST_PORT: コンテナが固有のポート5432を公開する、ホストマシン上の TCP ポート。ホストマシン上の PostgreSQL のデフォルト ポートも使用するには、5432を指定します。IMAGE_TAG: 最新の Debian イメージには17.5.0を使用し、最新の UBI イメージには17.5.0-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-1NEW_PASSWORD: 新しいコンテナのpostgresユーザーに作成後に割り当てられるパスワード。SHARED_MEMORY_SIZE: コンテナの/dev/shmに設定するサイズ(コンテナの実行で説明されている形式)。たとえば、1 GB を指定する場合は、値1gを使用します。HOST_PORT: コンテナが固有のポート5432を公開する、ホストマシン上の TCP ポート。ホストマシン上の PostgreSQL のデフォルト ポートも使用するには、5432を指定します。IMAGE_TAG: 最新の Debian イメージには17.5.0を使用し、最新の UBI イメージには17.5.0-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 で使用可能な拡張機能の一覧については、サポートされているデータベース拡張機能をご覧ください。PostGIS と Orafce は AlloyDB Omni には含まれていませんが、次の手順でインストールできます。
インストールされた拡張機能は、拡張機能を有効にするで説明されているように、標準の PostgreSQL CREATE EXTENSION ステートメントを使用して有効にします。