このページでは、AlloyDB クラスタとそのプライマリ インスタンスを作成する方法について説明します。
始める前に
- 使用している Google Cloud プロジェクトで AlloyDB へのアクセスが有効になっている必要があります。
- 使用している Google Cloud プロジェクト内の VPC ネットワークが、AlloyDB へのプライベート サービス アクセス用に構成済みでなければなりません。
- 使用しているGoogle Cloud プロジェクトには、次のいずれかの IAM ロールが必要です。
roles/alloydb.admin
(AlloyDB 管理者の IAM 事前定義ロール)roles/owner
(オーナーの IAM 基本ロール)roles/editor
(編集者の IAM 基本ロール)
- これらのロールが付与されていない場合は、アクセス権を付与するよう組織管理者に依頼してください。
- また、使用しているGoogle Cloud プロジェクトで
compute.networks.list
権限も持っている必要があります。最小権限の原則に従ってこの権限を取得するには、Compute ネットワーク ユーザー(roles/compute.networkUser
)ロールの付与を管理者に依頼してください。 - 開発ワークロードとサンドボックス ワークロードの場合は、リージョンとマシンタイプを検討してください。1 vCPU シェイプを使用する場合は、そのシェイプをサポートするリージョンを選択してください。詳細については、1 vCPU を使用する場合の考慮事項をご覧ください。
新しいクラスタとプライマリ インスタンスを作成する
コンソール
[クラスタ] ページに移動します。
[クラスタを作成] をクリックします。
クラスタ構成を選択します。高可用性構成と基本構成の違いについては、ノードとインスタンスをご覧ください。
新しいクラスタに読み取りプール インスタンスが必要かどうかわからない場合は、読み取りプールのない構成のいずれかを選択します。読み取りプール インスタンスは、必要に応じて後でクラスタに追加できます。
[続行] をクリックします。
[クラスタを構成する] セクションの [クラスタ ID] フィールドに、クラスタの ID を入力します。
[パスワード] フィールドに、新しいクラスタの初期パスワードを入力します。クラスタの作成時に、AlloyDB は指定されたパスワードを
postgres
データベース ユーザーに割り当てます。省略可:
alloydb.iam_authentication
フラグを手動で設定するには、[IAM データベース ユーザーを作成する] の選択を解除します。詳細については、インスタンスを編集するをご覧ください。デフォルトでは、[IAM データベース ユーザーを作成する] が選択されています。これにより、次の処理が行われます。
プライマリ インスタンスで
alloydb.iam_authentication
フラグを有効にします。IAM データベース ユーザーを作成します。
[データベースのバージョン] フィールドで、クラスタのデータベース サーバーとの互換性を維持する PostgreSQL のメジャー バージョンを選択します。
リージョンを選択します。 開発ワークロードとサンドボックス ワークロードの場合は、一部のリージョンで利用可能な 1 vCPU シェイプを検討してください。詳細については、1 vCPU を使用する場合の考慮事項をご覧ください。
ネットワーク パスを選択します。
省略可: AlloyDB に IP アドレス範囲を選択させるのではなく、このクラスタに特定の IP アドレス範囲を適用するには、次の操作を行います。
[割り振られた IP 範囲のオプションを表示] をクリックします。
[割り振られている IP 範囲] リストから IP アドレス範囲を選択します。
このオプションの詳細については、特定の IP アドレス範囲を持つクラスタを作成するをご覧ください。
省略可: このクラスタを Google 管理の暗号化ではなく、顧客管理の暗号鍵(CMEK)を使用して暗号化するには、次の操作も行います。
[詳細暗号化オプション] をクリックします。
[顧客管理の暗号鍵(CMEK)] を選択します。
表示されたメニューで、顧客管理の暗号鍵を選択します。
Google Cloud コンソールでは、新しいクラスタと同じ Google Cloud プロジェクトとリージョンにある鍵のみがリストに表示されます。このリストにない鍵を使用するには、[鍵が表示されない場合は、鍵のリソース名を入力してください。] をクリックして、表示されたダイアログに鍵のリソース名を入力します。
AlloyDB で CMEK を使用するには、追加の設定が必要です。詳細については、AlloyDB での CMEK の使用をご覧ください。
[続行] をクリックします。
プライマリ インスタンスを構成します。
- [インスタンス ID] フィールドに、プライマリ インスタンスの ID を入力します。
次のいずれかのマシンシリーズを選択します。
- C4A(Google Axion ベースのマシンシリーズ)
- N2(x86 ベースのマシンシリーズ)。これがデフォルトのマシンシリーズです。
マシンタイプを選択します。詳細については、マシンタイプを選択するをご覧ください。
- C4A は vCPU 数が 1、4、8、16、32、48、64、72 個のマシンタイプまたはシェイプをサポートしています。
- N2 は、2、4、8、16、32、64、96、128 のマシンタイプまたはシェイプをサポートしています。
1 vCPU マシンタイプなど、C4A Axion ベースのマシンシリーズの使用の詳細については、C4A Axion ベースのマシンシリーズを使用する場合の考慮事項をご覧ください。
省略可: インスタンスにカスタムフラグを設定します。フラグごとに次の操作を行います。
- [フラグを追加] をクリックします。
- [新しいデータベース フラグ] リストで、フラグを選択します。
- フラグの値を指定します。
- [完了] をクリックします。
読み取りプールのないクラスタタイプを選択した場合は、[クラスタを作成] をクリックします。
gcloud
gcloud CLI を使用するには、Google Cloud CLI をインストールして初期化するか、Cloud Shell を使用します。
AlloyDB の使用を始める前に、AlloyDB クラスタとプライマリ インスタンスの両方を作成する必要があります。
クラスタの作成
プライベート サービス アクセスまたは Private Service Connect を有効にしてクラスタを作成するには、
gcloud alloydb clusters create
コマンドを使用します。プライベート サービス アクセス
gcloud alloydb clusters create CLUSTER_ID \ --database-version=POSTGRES_VERSION \ --password=PASSWORD \ --region=REGION_ID \ --project=PROJECT_ID \ --network=NETWORK
Private Service Connect
gcloud alloydb clusters create CLUSTER_ID \ --database-version=POSTGRES_VERSION \ --password=PASSWORD \ --region=REGION_ID \ --project=PROJECT_ID \ --enable-private-service-connect
次のように置き換えます。
CLUSTER_ID
: 作成するクラスタの ID。先頭は英小文字にします。英小文字、数字、ハイフンを使用できます。VERSION
: クラスタのデータベース サーバーとの互換性を維持する PostgreSQL のメジャー バージョン。次のいずれかを選択します。14
: PostgreSQL 14 との互換性のため15
: PostgreSQL 15(サポートされているデフォルトの PostgreSQL バージョン)との互換性のため17
: PostgreSQL 17(プレビュー)との互換性用プレビュー版 PostgreSQL 17 の使用に適用される制限事項の詳細については、プレビュー版 PostgreSQL 17 の互換性をご覧ください。
PASSWORD
: デフォルトのpostgres
ユーザーに使用するパスワード。NETWORK
(省略可): AlloyDB に対するプライベート サービス アクセス用に構成した VPC ネットワークの名前。--network
フラグを省略すると、AlloyDB はdefault
ネットワークを使用します。共有 VPC ネットワークの場合は、VPC ネットワークの完全修飾パス(
projects/cymbal-project/global/networks/shared-vpc-network
など)を指定します。--enable-private-service-connect
(省略可): クラスタとそのインスタンスの接続方法として Private Service Connect を有効にするように設定します。REGION_ID
: クラスタを配置するリージョン。
PROJECT_ID
: クラスタを配置するプロジェクトの ID。
このコマンドは、長時間実行オペレーションを開始し、オペレーション ID を返します。
省略可: このクラスタに特定の IP アドレス範囲を適用するには、AlloyDB に IP アドレス範囲を選択させるのではなく、次の引数を指定します。
--allocated-ip-range-name=RANGE
RANGE
は、このクラスタがプライベート サービス アクセスに使用する IP アドレス範囲の名前に置き換えます。このオプションの詳細については、特定の IP アドレス範囲を持つクラスタを作成するをご覧ください。
省略可: このクラスタをデフォルトの Google 管理の暗号化ではなく、顧客管理の暗号鍵(CMEK)を使用して暗号化するには、次の引数を指定します。
--kms-key=KEY_ID \ --kms-keyring=KEYRING_ID \ --kms-location=LOCATION_ID \ --kms-project=PROJECT_ID
次のように置き換えます。
KEY_ID
: 使用する CMEK 鍵の ID。KEYRING_ID
: 鍵のキーリングの ID。LOCATION_ID
: キーリングのリージョンの ID。これは、クラスタのリージョンと同じである必要があります。PROJECT_ID
: キーリングのプロジェクトの ID。
オペレーションが成功したことを確認します。
gcloud alloydb operations describe OPERATION_ID \ --region=REGION_ID \ --project=PROJECT_ID
OPERATION_ID
は、前の手順から返されたオペレーション ID に置き換えます。
プライマリ クラスタを作成したら、プライマリ インスタンスを作成する必要があります。
プライマリ インスタンスを作成する
プライマリ インスタンスを作成するには、gcloud alloydb instances create
コマンドを使用します。
gcloud alloydb instances create INSTANCE_ID \
--instance-type=PRIMARY \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--cpu-count=CPU_COUNT \
--machine-type=MACHINE_TYPE \
--allowed-psc-projects=ALLOWED_PROJECT_LIST
次のように置き換えます。
INSTANCE_ID
: 作成するインスタンスの ID。英小文字、数字、ハイフンを使用できますが、先頭は英小文字にする必要があります。REGION_ID
: インスタンスを配置するリージョン。CLUSTER_ID
: 前に作成したクラスタの ID。PROJECT_ID
: クラスタが作成されたプロジェクトの ID。CPU_COUNT
: インスタンスに必要な vCPU の数。cpu_count
またはmachine_type
を指定する必要があります。cpu_count
のみが指定された場合、次の仕様で N2 インスタンスが作成されます。- 2: 2 vCPU、16 GB RAM
- 4: 4 vCPU、32 GB RAM
- 8: 8 vCPU、64 GB RAM
- 16: 16 vCPU、128 GB RAM
- 32: 32 vCPU、256 GB RAM
- 64: 64 vCPU、512 GB RAM
- 96: 96 vCPU、768 GB RAM
- 128: 128 vCPU、864 GB RAM
machine_type
とcpu_count
の両方が指定されている場合、cpu_count
の値はmachine_type
で指定された vCPU の数と一致する必要があります。たとえば、machine_type
がn2-highmem-4
の場合は、cpu_count
を4
に設定する必要があります。
MACHINE_TYPE
: インスタンスのマシンタイプ。詳細については、AlloyDB マシンタイプを選択するをご覧ください。C4A Axion ベースのマシンシリーズの場合、有効な値は次のとおりです。
c4a-highmem-1
c4a-highmem-4-lssd
c4a-highmem-8-lssd
c4a-highmem-16-lssd
c4a-highmem-32-lssd
c4a-highmem-48-lssd
c4a-highmem-64-lssd
c4a-highmem-72-lssd
N2 マシンシリーズの場合、有効な値は次のとおりです。
n2-highmem-2
n2-highmem-4
n2-highmem-8
n2-highmem-16
n2-highmem-32
n2-highmem-64
n2-highmem-96
n2-highmem-128
machine_type
とcpu_count
を一緒に使用する場合、cpu_count
とmachine_type
の値は一致している必要があります。たとえば、machine_type
がn2-highmem-4
の場合は、cpu_count
を4
に設定する必要があります。
ALLOWED_PROJECT_LIST
: (省略可)Private Service Connect を使用している場合、ALLOWED_PROJECT_LIST
は、インスタンスへのアクセスを許可するプロジェクト ID またはプロジェクト番号のカンマ区切りリストです。
Terraform
クラスタとプライマリ インスタンスを作成する
クラスタとそのプライマリ インスタンスを作成するには、Terraform リソースを使用します。
次のコード スニペットは、AlloyDB インスタンスの完全な例に基づいてクラスタとプライマリ インスタンスを作成します。
resource "google_alloydb_instance" "default" { cluster = google_alloydb_cluster.default.name instance_id = "alloydb-instance" instance_type = "PRIMARY" machine_config { cpu_count = 2 } depends_on = [google_service_networking_connection.vpc_connection] } resource "google_alloydb_cluster" "cluster_abc" { cluster_id = "alloydb-cluster" location = "us-central1" network_config { network = google_compute_network.default.id } database_version = "POSTGRES_16" initial_user { password = "alloydb-cluster" } } data "google_project" "project" {} resource "google_compute_network" "default" { name = "alloydb-network" } resource "google_compute_global_address" "private_ip_alloc" { name = "alloydb-cluster" address_type = "INTERNAL" purpose = "VPC_PEERING" prefix_length = 16 network = google_compute_network.default.id } resource "google_service_networking_connection" "vpc_connection" { network = google_compute_network.default.id service = "servicenetworking.googleapis.com" reserved_peering_ranges = [google_compute_global_address.private_ip_alloc.name] }
この例では、N2 インスタンスを作成します。C4A インスタンスを作成するには、次の例に示すように、machine_config
構造体の machine_type
フィールドを使用します。
machine_config { machine_type = "c4a-highmem-4-lssd" }
Cloud Shell を準備する
Google Cloud プロジェクトで Terraform 構成を適用するには、次のように Cloud Shell を準備します。
- Cloud Shell を起動します。
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュール)が必要です。
- Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイル名の拡張子は TF にする必要があります(例:
main.tf
)。このドキュメントでは、ファイル名をmain.tf
とします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
- 新しく作成した
main.tf
にサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。 main.tf
ファイルを確認して、環境に合わせてサンプル パラメータを変更します。- 変更を保存します。
- Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
省略可: 最新バージョンの Google プロバイダを使用する場合は、terraform init
-upgrade
オプションを使用します。terraform init -upgrade
変更を適用する
- 構成を確認して、Terraform の更新が想定どおりであることを確認します。
必要に応じて構成を修正します。terraform plan
- 次のコマンドを実行します。プロンプトで「
yes
」と入力して、Terraform 構成を適用します。 Terraform に「terraform apply
Apply complete!
」というメッセージが表示されるまで待ちます。 - Google Cloud プロジェクトを開いて結果を表示します。 Google Cloud コンソールの UI でリソースに移動し、Terraform によってリソースが作成または更新されたことを確認します。
REST v1
クラスタの作成
この例では、クラスタを作成します。この呼び出しで使用できるパラメータの完全なリストについては、メソッド: projects.locations.clusters.create をご覧ください。クラスタの設定の詳細については、クラスタとインスタンスの設定を表示するをご覧ください。
クラスタ ID には機密情報や個人を特定できる情報を含めないでください。クラスタ ID は外部から閲覧可能です。クラスタ名にプロジェクト ID を含める必要はありません。この処理は必要に応じて(ログファイルなどに対して)自動的に行われます。
リクエストを送信するには、リクエスト本文を cluster_request.json
という名前のファイルに保存します。
{
"databaseVersion": "<var>DATABASE_VERSION</var>",
"initialUser": {
"user": "<var>INITIAL_USERNAME</var>",
"password": "<var>INITIAL_USER_PASSWORD</var>"
},
"labels": {
"test": "alloydb-cluster-full"
}
}
次のように置き換えます。
DATABASE_VERSION
: データベース バージョンの列挙型文字列(例:POSTGRES_17
)INITIAL_USERNAME
: デフォルトの postgres ユーザーに使用するユーザー名。INITIAL_USER_PASSWORD
: デフォルトの postgres ユーザーに使用するパスワード。
次の HTTP メソッドと URL を使用します。
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters?cluster_id=CLUSTER_ID
次のように置き換えます。
PROJECT_ID
: クラスタを配置するプロジェクトの ID。LOCATION_ID
: クラスタのリージョンの ID。CLUSTER_ID
: 作成するクラスタの ID。クラスタ ID の先頭は英小文字にする必要があり、その後に英小文字、数字、ハイフンを続けることが可能です。
次の curl を使用して、上記のリクエストを実行できます。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://alloydb.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION_ID/clusters?cluster_id=CLUSTER_ID -d @cluster_request.json
プライマリ インスタンスを作成する
この例では、プライマリ インスタンスを作成します。この呼び出しで使用できるパラメータの完全なリストについては、メソッド: projects.locations.clusters.instances.create をご覧ください。クラスタの設定の詳細については、クラスタとインスタンスの設定を表示するをご覧ください。
クラスタ ID には機密情報や個人を特定できる情報を含めないでください。クラスタ ID は外部から閲覧できるためです。クラスタ名にプロジェクト ID を含める必要はありません。プロジェクト ID は、必要に応じて自動的に処理されます(ログファイルなど)。
リクエストを送信するには、次のリクエスト本文を instance_request.json
という名前のファイルに保存します。
{ "instance_type": "PRIMARY", "machine_config": { "cpu_count": "vCPU_COUNT" } }
次のように置き換えます。
VCPU_COUNT
: 作成するインスタンスで可視な CPU コアの数。
上記の例では、次の仕様で N2 インスタンスを作成します。
- 2: 2 vCPU、16 GB RAM
- 4: 4 vCPU、32 GB RAM
- 8: 8 vCPU、64 GB RAM
- 16: 16 vCPU、128 GB RAM
- 32: 32 vCPU、256 GB RAM
- 64: 64 vCPU、512 GB RAM
- 96: 96 vCPU、768 GB RAM
- 128: 128 vCPU、864 GB RAM
C4A インスタンスを作成するには、次の例に示すように、machine_config
構造体の cpu_count
ではなく machine_type
フィールドを使用します。
machine_config: { machine_type : MACHINE_TYPE, },
C4A Axion ベースのマシンシリーズの場合は、次の有効な値を使用します。
c4a-highmem-1
c4a-highmem-4-lssd
c4a-highmem-8-lssd
c4a-highmem-16-lssd
c4a-highmem-32-lssd
c4a-highmem-48-lssd
c4a-highmem-64-lssd
c4a-highmem-72-lssd
N2 マシンシリーズの場合、有効な値は次のとおりです。
n2-highmem-2
n2-highmem-4
n2-highmem-8
n2-highmem-16
n2-highmem-32
n2-highmem-64
n2-highmem-96
n2-highmem-128
次の HTTP メソッドと URL を使用します。
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances?instance_id=INSTANCE_ID
次のように置き換えます。
PROJECT_ID
: クラスタを配置するプロジェクトの ID。LOCATION_ID
: クラスタのリージョンの ID。CLUSTER_ID
: 作成するクラスタの ID。 ID の先頭は英小文字にする必要があります。英小文字、数字、ハイフンを使用できます。INSTANCE_ID
: 作成するプライマリ インスタンスの名前。
次の例に示すように、curl を使用してリクエストを実行できます。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://alloydb.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances?instance_id=INSTANCE_ID -d @instance_request.json
アクティブ クラスタのクローンを作成する
ソースクラスタのすべてのデータのコピーを含むアクティブ クラスタのクローンを作成し、同じリージョンで実行するには、そのクラスタでポイントインタイム リカバリを実行します。この場合、直前の時点(現在から 1 秒前など)を指定できます。
このプロセスでは、ソースクラスタの構成はコピーされず、ソースクラスタのデータのみがクローンにコピーされます。CMEK を使用してクローンのデータを暗号化するには、ソースクラスタのデータがすでに CMEK で暗号化されている場合でも、ポイントインタイム リカバリ コマンドの一部として CMEK の詳細を指定する必要があります。新しいクラスタを作成したら、インスタンス、データベース フラグ、バックアップ スケジュールなど、ニーズに応じて必要な構成を追加する必要があります。
この方法で作成されたクラスタはソースから独立して存在しています。最初の複製が完了した後、そのデータはソースクラスタのデータと関係がなくなります。ソースクラスタで行われたデータ変更を自動的に追跡して複製するセカンダリ クラスタを作成する場合は、クロスリージョン レプリケーションについてをご覧ください。
特定の IP アドレス範囲を持つクラスタを作成する
AlloyDB は、プライベート サービス アクセスを使用して、クラスタの内部リソースが相互に通信できるようにします。クラスタを作成する前に、プライベート サービス アクセス接続に構成された IP アドレス範囲が、Virtual Private Cloud(VPC)ネットワークに 1 つ以上含まれている必要があります。
プライベート サービス アクセスで構成された IP アドレス範囲が VPC ネットワークに複数存在する場合は、AlloyDB が新しいクラスタに割り当てる範囲を指定できます。
IP アドレス範囲を指定するには、クラスタを作成するのオプションの手順をご覧ください。
範囲を指定しないと、AlloyDB はクラスタの作成中に次のいずれかのアクションを実行します。
プライベート サービス アクセスが可能な IP アドレス範囲が複数ある場合、AlloyDB はこれらの範囲のいずれかを選択します。
VPC でプライベート サービス アクセスの IP アドレス範囲を 1 つしか設定していない場合、AlloyDB はその範囲を新しいクラスタに適用します。
AlloyDB で使用する IP アドレス範囲の作成の詳細については、プライベート サービス アクセスを有効にするをご覧ください。
C4A Axion ベースのマシンシリーズを使用する場合の考慮事項
AlloyDB は、Google のカスタム Arm ベースのプロセッサである Google Axion をベースにした C4A マシンシリーズを提供しています。C4A 仮想マシン(VM)は、1、4、8、16、32、48、64、72 個の vCPU の事前定義構成として利用できます。最大 576 GB の Double Data Rate 5(DDR5)メモリを備えています。
C4A を選択する場合は、次の点に注意してください。
- 既存の N2 インスタンスを C4A インスタンスに切り替えるには、 Google Cloud コンソール、gcloud CLI、Terraform、または API を使用して、現在のインスタンスの
machine_type
を変更します。 - N2 インスタンスを削除せずに、同じクラスタに新しい C4A インスタンスを作成します。
C4A は、次のリージョンでサポートされています。
asia-east1
asia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
us-central1
us-east1
us-east4
1 vCPU マシンタイプを使用する場合の考慮事項
AlloyDB は、C4A で 1 vCPU シェイプを提供します。これは、開発とテスト目的にのみ使用してください。本番環境ワークロードの場合は、2 個以上の vCPU を選択します。
1 vCPU を選択する場合は、次の制限事項に注意してください。
- 1 vCPU は、超高速キャッシュをサポートせずに 8 GB のメモリで提供されます。
- データベース サイズが数十ギガバイト程度の小規模な開発環境とサンドボックス環境には、1 vCPU 構成をおすすめします。大規模なデータベースと本番環境ワークロードの場合は、2 個以上の vCPU の使用を検討してください。
- 高可用性(HA)で構成できますが、稼働時間の SLA は提供されません。
- 1 vCPU をデプロイできる場所については、C4A のサポート対象のリージョンをご覧ください。
制限事項
PostgreSQL 17 では、Cloud SQL for PostgreSQL バックアップを AlloyDB クラスタにコピーして Cloud SQL for PostgreSQL インスタンスを移行することはできません。