このページでは、同種 PostgreSQL 移行から AlloyDB for PostgreSQL へのクイック スタート移行を行う方法について説明します。
概要
クイック スタート移行は、同種 PostgreSQL シナリオ向けの軽量な継続的移行フローです。クイック スタート移行を使用すると、Database Migration Service は、データベースの移行に必要なすべてのもの(ネットワーキング コンポーネント(ネットワーク アタッチメント、サブネット、プライベート接続構成)、接続プロファイル、移行ジョブ)を自動的に設定できます。
クイック スタート移行では、既存の AlloyDB for PostgreSQL クラスタにデータを移行するか、移行の構成時に新しいクラスタを作成できます。クイック スタート移行は、次の場合に最適です。
- データダンプの並列処理設定を正確に制御する必要がない基本的な移行。
- データベースをある Google Cloud プロジェクトから別のプロジェクトに移行する。クイック スタート移行を構成するときに、移行元とは異なるプロジェクトに移行先クラスタを作成し、別のプロジェクトの Virtual Private Cloud(VPC)ネットワークにネットワーク アタッチメントとサブネットを作成するように Database Migration Service を設定できます。
-
Google CloudVirtual Private Cloud(VPC)ネットワークにプライベート IP アドレスを持つソースからの移行。たとえば、Compute Engine 上のセルフマネージド データベースや、プライベート ネットワーキングが有効になっている Cloud SQL for PostgreSQL インスタンスなどです。
外部でホストされているソース Google Cloud は、VPC ネットワーク内のプライベート IP アドレスでアクセスできるように、追加のネットワーク コンポーネント(Cloud VPN 接続など)が必要になる場合があります。
- データベース接続でサポートされている方法は、Database Migration Service プライベート接続構成を使用した Private Service Connect インターフェースのみです。ソース データベースには、VPC ネットワークで割り当てられたプライベート IP が必要です。他の同種移行元接続方法(パブリック IP 許可リスト、リバース SSH トンネル、VPC ピアリングなど)は、クイック スタート移行ではサポートされていません。
クイック スタート移行の詳細については、Database Migration Service のメイン ドキュメントの クイック スタート移行の概要をご覧ください。
始める前に
- クイック スタートの移行でシナリオを完全にサポートできるかどうかを確認します。 クイック スタート移行の制限事項をご覧ください。
-
Google アカウントにログインします。
Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Database Migration Service、Compute Engine、Network Connectivity Center、AlloyDB for PostgreSQL Admin の各 API を有効にします。
必要なロール
Database Migration Service を使用して AlloyDB for PostgreSQL へのクイック スタート移行を実行するために必要な権限を取得するには、関連するプロジェクトで移行に関与するアカウントに必要な Identity and Access Management(IAM)ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、IAM ドキュメントの アクセス権の管理をご覧ください。
移行元プロジェクトのロールと権限
ソース データベースが存在する Google Cloud プロジェクトの特定のアカウントに、次のロールを付与します。
- 移行を実行するユーザー アカウントの場合:
Compute ネットワーク管理者ロール(
roles/compute.networkAdmin) - 移行先プロジェクトの Database Migration Service サービス アカウントの場合:
Compute ネットワーク閲覧者(
roles/compute.networkViewer)Database Migration Service サービス アカウントは、Database Migration Service API を有効にすると作成されます。このアカウントに関連付けられたメールアドレスは自動的に生成され、変更できません。このメールアドレスの形式は次のとおりです。
service-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.iam.gserviceaccount.com
これらの事前定義ロールには、Database Migration Service を使用したクイック スタート移行の一環として、ソース データベース プロジェクトで接続を設定するために必要な権限が含まれています。必要な権限を正確に確認するには、[必要な権限(ソース)] セクションを開いてください。
必要な権限(ソース)
Database Migration Service で同種のクイック スタート移行を行うには、次の権限が必要です。
移行を実行するユーザー アカウントの場合:
compute.networks.*compute.subnetworks.*compute.networkAttachments.*
宛先プロジェクトの Database Migration Service サービス アカウントの場合: compute.networkAttachments.get。
移行先プロジェクトのロールと権限
移行を実行するユーザー アカウントに、宛先データベースが存在する Google Cloud プロジェクトに対する次のロールを付与します。
-
データベース移行管理者(
roles/datamigration.admin) -
AlloyDB 管理者(
roles/alloydb.admin)
これらの事前定義ロールには、Database Migration Service を使用したクイック スタート移行の一環として、移行先データベース プロジェクトに必要な移行コンポーネントを設定するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限(宛先)」セクションを開いてご確認ください。
必要な権限(宛先)
Database Migration Service で同種のクイック スタート移行を行うには、次の権限が必要です。
datamigration.*alloydb.clusters.createalloydb.clusters.getalloydb.clusters.listalloydb.clusters.updatealloydb.clusters.deletealloydb.instances.createalloydb.instances.getalloydb.instances.listalloydb.instances.updatealloydb.instances.deletealloydb.instances.executeSqlalloydb.operations.getalloydb.users.listalloydb.users.getalloydb.users.createalloydb.users.updatealloydb.users.delete
ソース データベースの構成
ソース PostgreSQL データベースを構成する手順は次のとおりです。
- インスタンスに移行専用のユーザー アカウントを作成します。
- Cloud SQL for PostgreSQL ソースについては、Cloud SQL ドキュメントの ユーザーを作成するをご覧ください。
- 他のソースについては、データベース プロバイダのドキュメントまたは PostgreSQL ドキュメントの ユーザーの作成と管理をご覧ください。
- 移行専用のユーザー アカウントに必要な権限を割り当てます。移行するデータベースごとに、次のコマンドを実行します。
-- Grant the REPLICATION attribute ALTER ROLE MIGRATION_USER REPLICATION; -- Grant database-level permissions. -- Repeat for each database you want to migrate. GRANT CONNECT, CREATE ON DATABASE DATABASE_NAME TO MIGRATION_USER; -- Grant schema-level usage. -- Repeat for each schema in each database you want to migrate. GRANT USAGE ON SCHEMA SCHEMA_NAME TO MIGRATION_USER;
次のように置き換えます。
- MIGRATION_USER は、移行ユーザー アカウントの名前に置き換えます。
- DATABASE_NAME は、移行するデータベースの名前に置き換えます。
- SCHEMA_NAME は、移行するデータベースのスキーマの名前に置き換えます。
- 移行ユーザー アカウントには、移行するテーブルに対する所有権アクセス権が必要です。このレベルのアクセス権を付与するには、次のいずれかを行います。
- Cloud SQL for PostgreSQL 以外のソースの場合のみ: 移行アカウントに
SUPERUSERPostgreSQL ロールを割り当てます。 - すべてのソースの場合: 移行ユーザー アカウントを、テーブルを所有するユーザー グループに追加します。次のコマンドを実行します。
-- Grant table ownership. GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;
次のように置き換えます。
- TABLE_OWNER_GROUP_NAME は、移行する各テーブルを所有するユーザー グループの名前に置き換えます。
- MIGRATION_USER は、移行ユーザー アカウントの名前に置き換えます。
- Cloud SQL for PostgreSQL 以外のソースの場合のみ: 移行アカウントに
- 主キーのないテーブルの場合: Database Migration Service は、変更データ キャプチャ(CDC)フェーズで主キーのないテーブルの
UPDATEオペレーションまたはDELETEオペレーションを複製しません。このようなオペレーションをレプリケーションに含める場合は、REPLICA IDENTITYを使用して主キーのないテーブルを変更します。ALTER TABLE TABLE_NAME REPLICA IDENTITY FULL; ALTER TABLE TABLE_NAME REPLICA IDENTITY USING INDEX INDEX_NAME;
次のように置き換えます。
- TABLE_NAME は、主キーのないテーブルの名前です。
- INDEX_NAME は、主キーのないテーブルの行を追跡できる一意のインデックスです。
- データベース フラグを使用してレプリケーション設定を構成します。
セルフマネージド ソース
データベース フラグの変更を保存するには、データベースの完全な再起動が必要です。次の例では、フラグ値を変更する SQL クエリを使用します。SQL クエリを直接実行できない場合は、プロバイダのドキュメントでこれらのフラグを変更する手順をご確認ください。
wal_levelパラメータをlogicalに設定します。次のコマンドを実行します。ALTER SYSTEM SET wal_level = 'logical';
wal_sender_timeoutパラメータを0に設定します。この値は、非アクティブなレプリケーション接続を終了するために使用するタイムアウト メカニズムを無効にします。次のコマンドを実行します。ALTER SYSTEM SET wal_sender_timeout = 0;
max_replication_slotsパラメータを使用して、レプリケーション スロットの最大数を構成します。このパラメータには、移行ジョブごとに移行するデータベースの数とテーブル同期用の予約分を合計した値を設定する必要があります。たとえば、5 つのデータベースを移行し、移行元インスタンスに 2 つの移行ジョブが作成されている場合、レプリケーション スロットの数は、すでに使用されているレプリケーション スロットの数に
5 * 2 = 10を加えた数以上にする必要があります。このパラメータを設定するには、次のコマンドを実行します。
ここで、NUMBER_OF_SLOTS はレプリケーション スロットの最大数を表します。ALTER SYSTEM SET max_replication_slots = NUMBER_OF_SLOTS;
max_wal_sendersパラメータは、max_replication_slotsとインスタンスですでに使用されている送信者の数を合計した値以上に設定します。たとえば、
max_replication_slotsパラメータが10に設定されていて、すでに 2 つの送信者を使用している場合、同時に実行される WAL 送信者プロセスの数は10 + 2 = 12になります。このパラメータを設定するには、次のコマンドを実行します。
ここで、NUMBER_OF_SENDERS は同時に実行される WAL 送信者プロセスの数を表します。ALTER SYSTEM SET max_wal_senders = NUMBER_OF_SENDERS;
max_worker_processesは、移行するデータベースの数と、インスタンスですでに使用されているmax_worker_processesの数を合計した値以上に設定します。このパラメータを設定するには、次のコマンドを実行します。 ここで、NUMBER_OF_PROCESSES は移行されるデータベースの数を表します。ALTER SYSTEM SET max_worker_processes = NUMBER_OF_PROCESSES;
Cloud SQL for PostgreSQL ソース
Cloud SQL ソースの場合は、 Google Cloud コンソールでデータベース フラグを構成します。設定を有効にするには、データベース フラグを変更した後でインスタンスを再起動する必要があります。Cloud SQL でデータベース フラグを設定する方法については、Cloud SQL ドキュメントのデータベース フラグを構成するをご覧ください。
cloudsql.logical_decodingフラグをonに設定します。wal_sender_timeoutパラメータを0に設定します。この値は、非アクティブなレプリケーション接続を終了するために使用するタイムアウト メカニズムを無効にします。max_replication_slotsパラメータを使用して、レプリケーション スロットの最大数を構成します。このパラメータには、移行ジョブごとに移行するデータベースの数とテーブル同期用の予約分を合計した値を設定する必要があります。たとえば、5 つのデータベースを移行し、移行元インスタンスに 2 つの移行ジョブが作成されている場合、レプリケーション スロットの数は、すでに使用されているレプリケーション スロットの数に加えて、少なくとも
5 * 2 = 10にする必要があります。max_wal_sendersパラメータは、max_replication_slotsと同じ値に、インスタンスですでに使用されている送信者の数を加えた値以上に設定します。たとえば、
max_replication_slotsパラメータが10に設定されていて、すでに 2 つの送信者を使用している場合、同時に実行される WAL 送信者プロセスの数は10 + 2 = 12になります。max_worker_processesは、移行するデータベースの数と、インスタンスですでに使用されているmax_worker_processesの数を合計した値以上に設定します。
クイック スタート移行を作成して実行する
クイック スタートの移行を作成して実行するには、 Google Cloud コンソールまたは gcloud CLI を使用します。
コンソール
- Google Cloud コンソールで、[スタートガイド] ページに移動します。
- [移行元エンジン] メニューで、[PostgreSQL] を選択します。
- [移行先エンジン] メニューで、[AlloyDB for PostgreSQL] を選択します。
[クイック スタート PostgreSQL 移行の概要] セクションが表示されます。
- クイック スタート PostgreSQL 移行の紹介セクションで、[移行を開始] をクリックします。
[AlloyDB for PostgreSQL への移行] ページが開きます。
- [移行を構成する] セクションで、次の操作を行います。
- [移行先リージョン] メニューから、移行先 AlloyDB for PostgreSQL クラスタのリージョンを選択します。
- [移行接頭辞] ボックスに、クイック スタート移行用に作成されたすべての移行エンティティ(接続プロファイル、プライベート接続構成、ネットワーク アタッチメントとそのサブネット、移行ジョブ)の名前に追加されるわかりやすい文字列を入力します。
- [構成タイプ] メニューから、次のいずれかを選択します。
- 既存の接続構成: Private Service Connect インターフェース メソッドを使用するネットワーク アタッチメントとプライベート接続構成がすでにある場合は、このオプションを選択します。このオプションは、以前にクイック スタート移行を使用し、同じネットワーキング リソースを再利用する場合に最適です。
- 新しい接続構成: このオプションを選択すると、移行元データベースの VPC ネットワークに新しいネットワーク アタッチメントとネットワーク アタッチメント サブネットが作成されます。プライベート接続構成は、宛先クラスタと同じプロジェクトに作成されます。
[続行] をクリックします。
- [ソースを接続] セクションで、次の操作を行います。
- ソース データベースのホスト名またはプライベート IP アドレスを入力します。ソース データベースのアドレスは、ソース VPC ネットワークから到達可能である必要があります。
- ホストへのアクセスに使用するポートを入力します。デフォルトの PostgreSQL ポートは
5432です。 - 移行元データベースの移行専用アカウントのユーザー名とパスワードを入力します。
- [暗号化タイプ] メニューで、次のいずれかを選択します。
- なし: 移行元データベースで SSL/TLS 暗号化接続が必要ない場合。
- 必須: 移行元データベースで SSL/TLS 暗号化接続が必要な場合。このオプションでは、証明書の検証は必要ありません。
- [移行するデータベース] メニューで、[カスタマイズ] をクリックします。サイドパネルを使用して、AlloyDB for PostgreSQL に移行するデータベースのみを選択します。 [続行] をクリックします。
- [転送先を構成] セクションで、新しい転送先クラスタを作成するか、既存のクラスタを選択できます。
新しいクラスタ
新しい移行先クラスタを作成する場合は、次の操作を行います。
- [移行先インスタンス タイプ] メニューから、[新しいクラスタ] を選択します。
Database Migration Service は、新しいクラスタにデフォルトの AlloyDB for PostgreSQL 構成を使用します。[カスタマイズ] をクリックして、マシンタイプ、ゾーンの可用性、データ保護設定などのクラスタ機能を調整します。クラスタ構成の詳細については、AlloyDB for PostgreSQL ドキュメントの クラスタとそのプライマリ インスタンスを作成するをご覧ください。
- [パスワード] フィールドに、デフォルトの
postgresql管理ユーザーのパスワードを入力します。Database Migration Service は、このユーザーとして接続してデータを移行します。
既存のクラスタ
既存のクラスタにデータベースを移行できます。宛先クラスタで Private Service Connect が有効になっており、AlloyDB コネクタで mTLS が適用されていないことを確認します。次の操作を行います。
- [移行先インスタンス タイプ] メニューから、[既存のクラスタ] を選択します。
- [既存のクラスタ ID] メニューから、クラスタ識別子を選択します。
- [移行先インスタンス タイプ] メニューから、[新しいクラスタ] を選択します。
- [移行を開始] をクリックします。
Database Migration Service が移行ジョブを作成し、移行プロセスを開始します。AlloyDB for PostgreSQL では、移行の進行状況と移行先クラスタの健全性をモニタリングできます。詳細については、AlloyDB for PostgreSQL のドキュメントの インスタンスの詳細を表示するをご覧ください。
gcloud
gcloud CLI を使用してクイック スタートの移行を作成して実行するには、次の操作を行います。
-
ネットワーク アタッチメントを構成します。
新しいネットワーク アタッチメントを作成するか、既存のネットワーク アタッチメントを再利用するかを決定します。ソース データベースのプライベート IP に到達できるネットワークにネットワーク アタッチメントが必要です。- 新しいネットワーク アタッチメントを作成する場合は、次のコマンドを実行します(クリックして詳細を表示)。
gcloud compute network-attachments create後述のコマンドデータを使用する前に、次のように置き換えます。
- NETWORK_ATTACHMENT は、作成するネットワーク アタッチメントの名前に置き換えます。
- REGION: ネットワーク アタッチメントのリージョン。
- DEST_PROJECT_ID は、宛先プロジェクトのプロジェクト ID に置き換えます。
- SOURCE_PROJECT_ID: ソース ネットワークが存在するプロジェクトの ID。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud compute network-attachments create NETWORK_ATTACHMENT \ --region=REGION \ --connection-preference=ACCEPT_MANUAL \ --producer-accept-list=DEST_PROJECT_ID \ --subnets=default \ --project=SOURCE_PROJECT_ID
Windows(PowerShell)
gcloud compute network-attachments create NETWORK_ATTACHMENT ` --region=REGION ` --connection-preference=ACCEPT_MANUAL ` --producer-accept-list=DEST_PROJECT_ID ` --subnets=default ` --project=SOURCE_PROJECT_ID
Windows(cmd.exe)
gcloud compute network-attachments create NETWORK_ATTACHMENT ^ --region=REGION ^ --connection-preference=ACCEPT_MANUAL ^ --producer-accept-list=DEST_PROJECT_ID ^ --subnets=default ^ --project=SOURCE_PROJECT_ID
- 新しいネットワーク アタッチメントを作成する場合は、次のコマンドを実行します(クリックして詳細を表示)。
-
Database Migration Service テナント プロジェクトがネットワーク アタッチメントにアクセスできるようにします。
ネットワーク アタッチメントで、Database Migration Service テナント プロジェクトからの接続を許可する必要があります。次の手順を行います。- プライベート接続の作成をドライランして、Database Migration Service テナント プロジェクト ID を取得します(クリックして展開)。
gcloud database-migration private-connections create --validate-only後述のコマンドデータを使用する前に、次のように置き換えます。
- PRIVATE_CONN は、プライベート接続リソースの名前に置き換えます。
- REGION: プライベート接続のリージョン。
- NETWORK_ATTACHMENT_URI は、ネットワーク アタッチメントの URI に置き換えます。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud database-migration private-connections create PRIVATE_CONN \ --region=REGION \ --network-attachment=NETWORK_ATTACHMENT_URI \ --display-name=PRIVATE_CONN \ --format="value(metadata.metadata.tenant_project_id)" \ --validate-only
Windows(PowerShell)
gcloud database-migration private-connections create PRIVATE_CONN ` --region=REGION ` --network-attachment=NETWORK_ATTACHMENT_URI ` --display-name=PRIVATE_CONN ` --format="value(metadata.metadata.tenant_project_id)" ` --validate-only
Windows(cmd.exe)
gcloud database-migration private-connections create PRIVATE_CONN ^ --region=REGION ^ --network-attachment=NETWORK_ATTACHMENT_URI ^ --display-name=PRIVATE_CONN ^ --format="value(metadata.metadata.tenant_project_id)" ^ --validate-only
返されたテナント プロジェクト ID を保存して、後続のコマンドで使用します。
- Database Migration Service のテナント プロジェクトと移行先プロジェクトがネットワーク アタッチメントに接続できるようにします(クリックして展開)。
gcloud compute network-attachments update後述のコマンドデータを使用する前に、次のように置き換えます。
- NETWORK_ATTACHMENT は、ネットワーク アタッチメントの名前に置き換えます。
- REGION: リージョン
- DEST_PROJECT_ID は、宛先プロジェクトのプロジェクト ID に置き換えます。
- DMS_TENANT_ID は、取得した Database Migration Service テナント プロジェクト ID に置き換えます。
- SOURCE_PROJECT_ID: ソース ネットワークが存在するプロジェクトの ID。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud compute network-attachments update NETWORK_ATTACHMENT \ --region=REGION \ --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID \ --project=SOURCE_PROJECT_ID
Windows(PowerShell)
gcloud compute network-attachments update NETWORK_ATTACHMENT ` --region=REGION ` --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID ` --project=SOURCE_PROJECT_ID
Windows(cmd.exe)
gcloud compute network-attachments update NETWORK_ATTACHMENT ^ --region=REGION ^ --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID ^ --project=SOURCE_PROJECT_ID
- プライベート接続の作成をドライランして、Database Migration Service テナント プロジェクト ID を取得します(クリックして展開)。
-
プライベート接続を作成します。
Database Migration Service が移行元ネットワークに接続できるように、プライベート接続リソースを作成します(クリックして展開)。gcloud database-migration private-connections create後述のコマンドデータを使用する前に、次のように置き換えます。
- PRIVATE_CONN は、プライベート接続リソースの名前に置き換えます。
- REGION: プライベート接続のリージョン。
- NETWORK_ATTACHMENT_URI は、ネットワーク アタッチメントの URI に置き換えます。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud database-migration private-connections create PRIVATE_CONN \ --region=REGION \ --network-attachment=NETWORK_ATTACHMENT_URI \ --display-name=PRIVATE_CONN
Windows(PowerShell)
gcloud database-migration private-connections create PRIVATE_CONN ` --region=REGION ` --network-attachment=NETWORK_ATTACHMENT_URI ` --display-name=PRIVATE_CONN
Windows(cmd.exe)
gcloud database-migration private-connections create PRIVATE_CONN ^ --region=REGION ^ --network-attachment=NETWORK_ATTACHMENT_URI ^ --display-name=PRIVATE_CONN
-
ソース接続プロファイルを作成します。
次のコマンドを実行します(クリックして展開)。gcloud database-migration connection-profiles create postgresqlこのサンプルでは、すべてのオペレーションが同期的に実行されるように、オプションの
--no-asyncフラグを使用しています。そのため、一部のコマンドの完了に時間がかかることがあります。--no-asyncフラグを省略して、コマンドを非同期で実行できます。その場合は、gcloud database-migration operations describeコマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。後述のコマンドデータを使用する前に、次のように置き換えます。
- SOURCE_CONN_ID は、移行元接続プロファイルの ID に置き換えます。
- REGION は、接続プロファイルを保存するリージョンに置き換えます。
- SOURCE_PRIVATE_IP は、ソース データベースのプライベート IP アドレスに置き換えます。
- SOURCE_PORT: ソース データベースのポート(デフォルトは 5432)。
- SOURCE_USER は、ソース データベースの移行ユーザーのユーザー名に置き換えます。
- SOURCE_PASSWORD は、移行元データベースの移行ユーザーのパスワードに置き換えます。
- PRIVATE_CONN は、プライベート接続リソースの名前に置き換えます。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud database-migration connection-profiles create postgresql \ SOURCE_CONN_ID \ --region=REGION \ --role=SOURCE \ --host=SOURCE_PRIVATE_IP \ --port=SOURCE_PORT \ --username=SOURCE_USER \ --password=SOURCE_PASSWORD \ --private-connection=PRIVATE_CONN \ --no-async
Windows(PowerShell)
gcloud database-migration connection-profiles create postgresql ` SOURCE_CONN_ID ` --region=REGION ` --role=SOURCE ` --host=SOURCE_PRIVATE_IP ` --port=SOURCE_PORT ` --username=SOURCE_USER ` --password=SOURCE_PASSWORD ` --private-connection=PRIVATE_CONN ` --no-async
Windows(cmd.exe)
gcloud database-migration connection-profiles create postgresql ^ SOURCE_CONN_ID ^ --region=REGION ^ --role=SOURCE ^ --host=SOURCE_PRIVATE_IP ^ --port=SOURCE_PORT ^ --username=SOURCE_USER ^ --password=SOURCE_PASSWORD ^ --private-connection=PRIVATE_CONN ^ --no-async
-
移行先接続プロファイルを作成します。
新しい AlloyDB for PostgreSQL クラスタに移行するか、既存の AlloyDB for PostgreSQL クラスタに移行するかに応じて、タブを選択します。新しいクラスタ
クイック スタート移行に新しい移行先クラスタを使用するには、まず AlloyDB for PostgreSQL Google Cloud CLI を使用してクラスタとそのプライマリ インスタンスを作成し、次に移行先接続プロファイルを作成します。手順は次のとおりです。
- AlloyDB for PostgreSQL Google Cloud CLI を使用して、
クラスタとそのプライマリ インスタンスを作成します。
--enable-private-service-connectフラグを使用して、Private Service Connect の宛先クラスタを有効にしてください。クイック スタート移行は、Private Service Connect が有効になっている宛先のみをサポートします。 - 新しいクラスタの移行先接続プロファイルを作成します。コマンドの詳細については、次のセクションを開いてください。
gcloud database-migration connection-profiles create postgresqlこのサンプルでは、すべてのオペレーションが同期的に実行されるように、オプションの
--no-asyncフラグを使用しています。そのため、一部のコマンドの完了に時間がかかることがあります。--no-asyncフラグを省略して、コマンドを非同期で実行できます。その場合は、gcloud database-migration operations describeコマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。後述のコマンドデータを使用する前に、次のように置き換えます。
- DEST_CONN_ID は、宛先接続プロファイルの識別子に置き換えます。
- REGION は、接続プロファイルを保存するリージョンに置き換えます。このリージョンは、宛先クラスタのリージョンと同じにする必要があります。
- DEST_CLUSTER: 移行先の AlloyDB for PostgreSQL クラスタの ID または完全なリソースパス。
- DEST_USER は、移行先データベースの移行ユーザーのユーザー名に置き換えます。
- DEST_PASSWORD は、宛先データベースの移行ユーザーのパスワードに置き換えます。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \ --region=REGION \ --alloydb-cluster=DEST_CLUSTER \ --username=DEST_USER \ --password=DEST_PASSWORD \ --role=DESTINATION \ --no-async
Windows(PowerShell)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ` --region=REGION ` --alloydb-cluster=DEST_CLUSTER ` --username=DEST_USER ` --password=DEST_PASSWORD ` --role=DESTINATION ` --no-async
Windows(cmd.exe)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^ --region=REGION ^ --alloydb-cluster=DEST_CLUSTER ^ --username=DEST_USER ^ --password=DEST_PASSWORD ^ --role=DESTINATION ^ --no-async
次のようなレスポンスが返されます。
Waiting for connection profile [CONNECTION_PROFILE_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
既存のクラスタ
既存の宛先クラスタに移行するには、事前に作成したクラスタを指す接続プロファイルを作成します。次のコマンドを実行します(クリックして展開)。
gcloud database-migration connection-profiles create postgresqlこのサンプルでは、すべてのオペレーションが同期的に実行されるように、オプションの
--no-asyncフラグを使用しています。そのため、一部のコマンドの完了に時間がかかることがあります。--no-asyncフラグを省略して、コマンドを非同期で実行できます。その場合は、gcloud database-migration operations describeコマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。後述のコマンドデータを使用する前に、次のように置き換えます。
- DEST_CONN_ID は、宛先接続プロファイルの識別子に置き換えます。
- REGION は、接続プロファイルを保存するリージョンに置き換えます。このリージョンは、宛先クラスタのリージョンと同じにする必要があります。
- DEST_CLUSTER: 移行先の AlloyDB for PostgreSQL クラスタの ID または完全なリソースパス。
- DEST_USER は、移行先データベースの移行ユーザーのユーザー名に置き換えます。
- DEST_PASSWORD は、宛先データベースの移行ユーザーのパスワードに置き換えます。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \ --region=REGION \ --alloydb-cluster=DEST_CLUSTER \ --username=DEST_USER \ --password=DEST_PASSWORD \ --role=DESTINATION \ --no-async
Windows(PowerShell)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ` --region=REGION ` --alloydb-cluster=DEST_CLUSTER ` --username=DEST_USER ` --password=DEST_PASSWORD ` --role=DESTINATION ` --no-async
Windows(cmd.exe)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^ --region=REGION ^ --alloydb-cluster=DEST_CLUSTER ^ --username=DEST_USER ^ --password=DEST_PASSWORD ^ --role=DESTINATION ^ --no-async
次のようなレスポンスが返されます。
Waiting for connection profile [CONNECTION_PROFILE_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
- AlloyDB for PostgreSQL Google Cloud CLI を使用して、
クラスタとそのプライマリ インスタンスを作成します。
-
移行ジョブを作成します。
次のコマンドを実行して、継続的移行ジョブを作成します(クリックして展開)。gcloud database-migration migration-jobs createこのサンプルでは、すべてのオペレーションが同期的に実行されるように、オプションの
--no-asyncフラグを使用しています。そのため、一部のコマンドの完了に時間がかかることがあります。--no-asyncフラグを省略して、コマンドを非同期で実行できます。その場合は、gcloud database-migration operations describeコマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。後述のコマンドデータを使用する前に、次のように置き換えます。
- MIGRATION_JOB_ID は、移行ジョブの ID に置き換えます。
- REGION: 移行ジョブを保存するリージョン。
- SOURCE_CONN_ID は、ソース接続プロファイルの ID に置き換えます。
- DEST_CONN_ID は、宛先接続プロファイルの識別子に置き換えます。
- DATABASES_LIST は、移行するデータベースのカンマ区切りのリストに置き換えます。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud database-migration migration-jobs create \ MIGRATION_JOB_ID \ --region=REGION \ --type=CONTINUOUS \ --source=SOURCE_CONN_ID \ --destination=DEST_CONN_ID \ --use-postgres-native \ --postgres-max-additional-subscriptions=10 \ --databases-filter=DATABASES_LIST \ --no-async
Windows(PowerShell)
gcloud database-migration migration-jobs create ` MIGRATION_JOB_ID ` --region=REGION ` --type=CONTINUOUS ` --source=SOURCE_CONN_ID ` --destination=DEST_CONN_ID ` --use-postgres-native ` --postgres-max-additional-subscriptions=10 ` --databases-filter=DATABASES_LIST ` --no-async
Windows(cmd.exe)
gcloud database-migration migration-jobs create ^ MIGRATION_JOB_ID ^ --region=REGION ^ --type=CONTINUOUS ^ --source=SOURCE_CONN_ID ^ --destination=DEST_CONN_ID ^ --use-postgres-native ^ --postgres-max-additional-subscriptions=10 ^ --databases-filter=DATABASES_LIST ^ --no-async
次のようなレスポンスが返されます。
Waiting for migration job [MIGRATION_JOB_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created migration job MIGRATION_JOB_ID [OPERATION_ID]
-
移行ジョブを開始します。
移行ジョブを開始するには、次のコマンドを実行します(クリックして展開)。gcloud database-migration migration-jobs startgcloud database-migration migration-jobs start MIGRATION_JOB_ID \ --region=REGION
移行を完了する
アプリケーションを新しい AlloyDB for PostgreSQL インスタンスに切り替える場合は、次の手順で移行を完了します。
- 移行元データベースに対するすべての書き込みオペレーションを停止します。読み取り専用モードに切り替えて、運用機能を維持できます。
- 移行ジョブをプロモートします。クイック スタート移行の場合、移行プロセス中も移行先インスタンスは書き込み可能のままです。移行ジョブを昇格すると、レプリケーションが終了するだけで、移行先インスタンスには影響しません。
- 省略可: 移行データの完全性を 検証する。