このページでは、AlloyDB for PostgreSQL クラスタへの継続的な同種 PostgreSQL 移行用にソース データベース インスタンスを構成する方法について説明します。サポートされているソース バージョンの詳細については、
サポートされているソースと宛先のデータベースをご覧ください。クイック スタート移行を使用する場合は、
クイック スタート移行を使用するガイドに沿って操作します。クイック スタート移行では、pgnative レプリケーションと Private Service Connect インターフェースに基づく専用の接続を使用する、簡素化された移行フローが提供されます。詳細については、Database Migration Service のメイン ドキュメントの
クイックスタート移行についてをご覧ください。
このページでは、サポートされているすべてのソースのスタンドアロン手順について説明します。
- セルフマネージド PostgreSQL(オンプレミスまたは Compute Engine VM 上)
- Amazon RDS for PostgreSQL
- Amazon Aurora for PostgreSQL
- Cloud SQL for PostgreSQL
セルフホストの PostgreSQL ソースを構成する
継続的な移行のためにセルフホスト型の PostgreSQL 移行元インスタンス(オンプレミスまたは Compute Engine VM でホストされている)を構成するには、次の手順を完了します。
- セルフホスト型の PostgreSQL ソースの場合、Database Migration Service は、テンプレート データベース
template0とtemplate1を除く、移行元インスタンスのすべてのデータベースを移行します。 - 移行元インスタンスにデフォルトの
postgresデータベースが含まれていることを確認します。このデータベースが存在しない場合は、移行を構成する前に作成します。 pg_hba.confファイルでネットワーク クライアント認証を構成します。移行先の AlloyDB for PostgreSQL クラスタの IP アドレス範囲、VPC CIDR の範囲、またはリバース SSH 踏み台インスタンスからのレプリケーション接続とデータベース アクセスを許可するエントリを追加します。# Allow replication connections host replication MIGRATION_USER_ACCOUNT_NAME DESTINATION_IP_OR_CIDR md5 # Allow database access host all MIGRATION_USER_ACCOUNT_NAME DESTINATION_IP_OR_CIDR md5
PostgreSQL 構成を再読み込みして、
pg_hba.confルールを適用します。SELECT pg_reload_conf();
- ソース データベースにインストールされている PostgreSQL 拡張機能を確認します。Database Migration Service は、AlloyDB for PostgreSQL でサポートされていない拡張機能を移行しません。ソース データベース オブジェクトとアプリケーション クエリが、サポートされていない拡張機能を参照していないことを確認します。続行する前に、サポートされていない拡張機能と参照を移行元データベースから削除してください。
pg_cron拡張機能は、Database Migration Service によって自動的に移行されませんが、AlloyDB for PostgreSQL の移行先でサポートされています。ソース データベースでpg_cronを使用している場合は、移行をプロモートした後、移行先の AlloyDB for PostgreSQL クラスタに再インストールして構成します。 - 移行元インスタンスに移行専用のユーザー アカウントを作成し、必要な権限を付与します。
- 管理者アカウントを使用してソース インスタンスに接続し、ユーザーを作成して、レプリケーション ロールを割り当てます。
CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH REPLICATION;
- 移行ユーザー アカウントに、デフォルトの
postgresデータベースと、移行するすべてのデータベースに必要な権限を付与します。情報スキーマとpg_で始まるスキーマを除き、各データベースの各スキーマで次のコマンドを実行します。GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- 管理者アカウントを使用してソース インスタンスに接続し、ユーザーを作成して、レプリケーション ロールを割り当てます。
- 移行する各データベース(
template0とtemplate1を除く)にpglogical拡張機能をインストールします。- PostgreSQL バージョン 9.4 の場合: 次のコマンドを実行します。
CREATE EXTENSION IF NOT EXISTS pglogical; CREATE EXTENSION IF NOT EXISTS pglogical_origin;
- PostgreSQL バージョン 9.5 以降の場合: 次のコマンドを実行します。
CREATE EXTENSION IF NOT EXISTS pglogical;
- PostgreSQL バージョン 9.4 の場合: 次のコマンドを実行します。
- テーブルに主キーがあることを確認します。継続的な移行の場合、PostgreSQL の論理レプリケーションでは、変更データ キャプチャ(CDC)フェーズで
UPDATEオペレーションとDELETEオペレーションを複製するために、テーブルに主キーが必要です。- 主キーを持つテーブルは、すべての
INSERT、UPDATE、DELETEオペレーションを自動的に複製します。 - 主キーがないテーブルの場合、Database Migration Service は、CDC フェーズでの初期スナップショットと後続の
INSERTステートメントの移行のみをサポートします。UPDATEステートメントとDELETEステートメントは手動で移行する必要があります。移行を開始する前に、主キーのないテーブルに主キーを追加することをおすすめします。PostgreSQL データベース内で主キーのないテーブルを一覧表示するクエリを作成する方法、または
UPDATEオペレーションとDELETEオペレーションを手動で移行する方法については、 デバッグとその他のツールをご覧ください。または、クイックスタート移行フローを使用することもできます。これは、
REPLICA IDENTITYを使用して主キーのないテーブルを移行できる、簡素化された移行シナリオです。詳細については、 クイックスタート移行を使用するガイドをご覧ください。
- 主キーを持つテーブルは、すべての
- PostgreSQL バージョン 9.5 以前を実行しているソース: PostgreSQL バージョン 9.6 以前を実行しているソース インスタンスでは、レプリケーション遅延の指標を使用できません。この指標を使用して移行の進行状況を追跡する場合は、 レプリケーション遅延を有効にするをご覧ください。
pglogicalパッケージをインストールし、PostgreSQL サーバーで WAL とレプリケーション パラメータを構成します。- データベース サーバーのホスト オペレーティング システムに
pglogicalパッケージをインストールします。ディストリビューションのパッケージとインストール手順については、pglogical GitHub リポジトリをご覧ください。 - 管理アカウントを使用して PostgreSQL インスタンスに接続し、次のパラメータを設定します。
shared_preload_librariesを'pglogical'を含むように設定します。ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
wal_levelを'logical'に設定します。ALTER SYSTEM SET wal_level = 'logical';
PostgreSQL のドキュメントで
wal_levelをご覧ください。wal_sender_timeoutを0に設定します。ALTER SYSTEM SET wal_sender_timeout = 0;
0値は、非アクティブなレプリケーション接続を終了するタイムアウト メカニズムを無効にします。wal_sender_timeoutをご覧ください。max_replication_slotsには、移行するデータベースの数に移行ジョブの数を掛けた値に、テーブル同期用の予約分を加えた値を設定します。たとえば、移行元インスタンスに 5 つのデータベースがあり、その移行元に 2 つの移行ジョブを作成する場合、レプリケーション スロットの数は 5 × 2 = 10 以上にする必要があります。これに、他のタスクによって移行元ですでに使用されているレプリケーション スロットの数を加えます。調整されたデータダンプの並列処理設定を使用する場合は、移行ジョブの作成時にレプリケーション スロットの数を増やし、構成を確認してください。
ALTER SYSTEM SET max_replication_slots = MAX_REPLICATION_SLOTS;
このパラメータのデフォルト値は 10 です。
max_replication_slotsをご覧ください。max_wal_sendersは、max_replication_slotsの値とインスタンスですでに使用されている送信者の数を合計した値以上に設定します。たとえば、
max_replication_slotsパラメータが10に設定されていて、すでに 2 つの送信者を使用している場合、同時に実行される WAL 送信者プロセスの数は 10 + 2 = 12 になります。調整されたデータダンプの並列処理設定を使用する場合は、移行ジョブの作成時に送信者の数を増やし、構成を確認してください。ALTER SYSTEM SET max_wal_senders = MAX_WAL_SENDERS;
このパラメータのデフォルト値は 10 です。
max_wal_sendersをご覧ください。max_worker_processesは、移行するデータベースの数にインスタンス上の既存のワーカー プロセス数を加えた数以上に設定します。調整されたデータダンプの並列処理設定を使用する場合は、接続ごとに 2 つのワーカー プロセスを追加します(最大 20 ワーカー)。ALTER SYSTEM SET max_worker_processes = MAX_WORKER_PROCESSES;
このパラメータのデフォルト値は 8 です。
max_worker_processesをご覧ください。
- データベース サーバーのホスト オペレーティング システムに
- 構成の変更が反映されるように、PostgreSQL サーバーを再起動します。
Amazon RDS for PostgreSQL ソースを構成する
継続的な移行用に Amazon RDS for PostgreSQL 移行元インスタンスを構成するには、次の手順を完了します。
- Amazon RDS for PostgreSQL ソースの場合、Database Migration Service は、テンプレート データベース
template0、template1、AWS 内部データベースrdsadminを除く、ソース インスタンスのすべてのデータベースを移行します。 - 移行元インスタンスにデフォルトの
postgresデータベースが含まれていることを確認します。このデータベースが存在しない場合は、移行を構成する前に作成します。 - Amazon RDS VPC セキュリティ グループの受信ルールを構成します。宛先の AlloyDB for PostgreSQL クラスタの IP アドレス範囲、VPC CIDR の範囲、またはリバース SSH 踏み台インスタンス VM からのポート
5432での受信 TCP 接続を許可します。 - ソース データベースにインストールされている PostgreSQL 拡張機能を確認します。Database Migration Service は、AlloyDB for PostgreSQL でサポートされていない拡張機能を移行しません。ソース データベース オブジェクトとアプリケーション クエリが、サポートされていない拡張機能を参照していないことを確認します。続行する前に、サポートされていない拡張機能と参照を移行元データベースから削除してください。
pg_cron拡張機能は、Database Migration Service によって自動的に移行されませんが、AlloyDB for PostgreSQL の移行先でサポートされています。ソース データベースでpg_cronを使用している場合は、移行をプロモートした後、移行先の AlloyDB for PostgreSQL クラスタに再インストールして構成します。 - 移行元インスタンスに移行専用のユーザー アカウントを作成し、必要な権限を付与します。
- 管理アカウントを使用してソース インスタンスに接続し、ユーザーを作成して、AWS 管理の
rds_replicationロールを付与します。CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
- 移行ユーザー アカウントに、デフォルトの
postgresデータベースと、移行するすべてのデータベースに必要な権限を付与します。情報スキーマとpg_で始まるスキーマを除き、各データベースの各スキーマで次のコマンドを実行します。GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- 管理アカウントを使用してソース インスタンスに接続し、ユーザーを作成して、AWS 管理の
- 移行する各データベース(
template0、template1、rdsadminを除く)にpglogical拡張機能をインストールします。以下のコマンドを実行します。CREATE EXTENSION IF NOT EXISTS pglogical;
要件の詳細については、AWS ドキュメントの Amazon RDS for PostgreSQL で PostgreSQL 拡張機能を使用するをご覧ください。
- テーブルに主キーがあることを確認します。継続的な移行の場合、PostgreSQL の論理レプリケーションでは、変更データ キャプチャ(CDC)フェーズで
UPDATEオペレーションとDELETEオペレーションを複製するために、テーブルに主キーが必要です。- 主キーを持つテーブルは、すべての
INSERT、UPDATE、DELETEオペレーションを自動的に複製します。 - 主キーがないテーブルの場合、Database Migration Service は、CDC フェーズでの初期スナップショットと後続の
INSERTステートメントの移行のみをサポートします。UPDATEステートメントとDELETEステートメントは手動で移行する必要があります。移行を開始する前に、主キーのないテーブルに主キーを追加することをおすすめします。PostgreSQL データベース内で主キーのないテーブルを一覧表示するクエリを作成する方法、または
UPDATEオペレーションとDELETEオペレーションを手動で移行する方法については、 デバッグとその他のツールをご覧ください。または、クイックスタート移行フローを使用することもできます。これは、
REPLICA IDENTITYを使用して主キーのないテーブルを移行できる、簡素化された移行シナリオです。詳細については、 クイックスタート移行を使用するガイドをご覧ください。
- 主キーを持つテーブルは、すべての
- カスタム DB パラメータ グループを構成し、インスタンスに接続します。
- カスタム パラメータ グループを作成し(AWS ドキュメントの
DB パラメータ グループの操作をご覧ください)、次のパラメータを構成します。
shared_preload_librariesを設定して、pglogicalを含めます。- [
rds.logical_replication] を [1] に設定します。このパラメータにより、Amazon RDS で論理 WAL ロギングが有効になります。Amazon RDS for PostgreSQL の論理レプリケーションをご覧ください。 - [
wal_sender_timeout] を [0] に設定します。0値は、非アクティブなレプリケーション接続を終了するタイムアウト メカニズムを無効にします。 max_replication_slotsには、移行するデータベースの数に移行ジョブの数を掛けた値に、テーブル同期用の予約分を加えた値を設定します。たとえば、移行元インスタンスに 5 つのデータベースがあり、その移行元に 2 つの移行ジョブを作成する場合、レプリケーション スロットの数は 5 × 2 = 10 以上にする必要があります。これに、他のタスクによって移行元ですでに使用されているレプリケーション スロットの数を加えます。調整されたデータダンプの並列処理設定を使用する場合は、移行ジョブの作成時にレプリケーション スロットの数を増やし、構成を確認してください。
このパラメータのデフォルト値は 10 です。
max_wal_sendersは、max_replication_slotsの値とインスタンスですでに使用されている送信者の数を合計した値以上に設定します。たとえば、
max_replication_slotsパラメータが10に設定されていて、すでに 2 つの送信者を使用している場合、同時に実行される WAL 送信者プロセスの数は 10 + 2 = 12 になります。調整されたデータダンプの並列処理設定を使用する場合は、移行ジョブの作成時に送信者の数を増やし、構成を確認してください。このパラメータのデフォルト値は 10 です。
max_worker_processesは、移行するデータベースの数にインスタンス上の既存のワーカー プロセス数を加えた数以上に設定します。調整されたデータダンプの並列処理設定を使用する場合は、接続ごとに 2 つのワーカー プロセスを追加します(最大 20 ワーカー)。このパラメータのデフォルト値は 8 です。
- パラメータ グループを RDS DB インスタンスに接続します。新しいインスタンスを作成する場合は、[追加構成] でこのオプションを確認できます。それ以外の場合は、インスタンスを変更してパラメータ グループをアタッチします。
- カスタム パラメータ グループを作成し(AWS ドキュメントの
DB パラメータ グループの操作をご覧ください)、次のパラメータを構成します。
- パラメータ グループの変更が有効になるように、Amazon RDS インスタンスを再起動します。
Amazon Aurora PostgreSQL ソースを構成する
継続的な移行用に Amazon Aurora PostgreSQL ソースクラスタを構成するには、次の手順を完了します。
- Amazon Aurora for PostgreSQL ソースの場合、Database Migration Service は、テンプレート データベース
template0、template1、AWS 内部データベースrdsadminを除く、ソースクラスタ内のすべてのデータベースを移行します。 - ソースクラスタにデフォルトの
postgresデータベースが含まれていることを確認します。このデータベースが存在しない場合は、移行を構成する前に作成します。 - Amazon Aurora クラスタの VPC セキュリティ グループの受信ルールを構成します。宛先の AlloyDB for PostgreSQL クラスタの IP アドレス範囲、VPC CIDR の範囲、またはリバース SSH 踏み台インスタンス VM からのポート
5432での受信 TCP 接続を許可します。 - ソース データベースにインストールされている PostgreSQL 拡張機能を確認します。Database Migration Service は、AlloyDB for PostgreSQL でサポートされていない拡張機能を移行しません。ソース データベース オブジェクトとアプリケーション クエリが、サポートされていない拡張機能を参照していないことを確認します。続行する前に、サポートされていない拡張機能と参照を移行元データベースから削除してください。
pg_cron拡張機能は、Database Migration Service によって自動的に移行されませんが、AlloyDB for PostgreSQL の移行先でサポートされています。ソース データベースでpg_cronを使用している場合は、移行をプロモートした後、移行先の AlloyDB for PostgreSQL クラスタに再インストールして構成します。 - ソースクラスタに移行専用のユーザー アカウントを作成し、必要な権限を付与します。
- 管理アカウントを使用してソースクラスタに接続し、ユーザーを作成して、AWS 管理の
rds_replicationロールを付与します。CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
- 移行ユーザー アカウントに、デフォルトの
postgresデータベースと、移行するすべてのデータベースに必要な権限を付与します。情報スキーマとpg_で始まるスキーマを除き、各データベースの各スキーマで次のコマンドを実行します。GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- 管理アカウントを使用してソースクラスタに接続し、ユーザーを作成して、AWS 管理の
template0、template1、rdsadminを除く、移行する各データベースにpglogical拡張機能をインストールします。CREATE EXTENSION IF NOT EXISTS pglogical;
- テーブルに主キーがあることを確認します。継続的な移行の場合、PostgreSQL の論理レプリケーションでは、変更データ キャプチャ(CDC)フェーズで
UPDATEオペレーションとDELETEオペレーションを複製するために、テーブルに主キーが必要です。- 主キーを持つテーブルは、すべての
INSERT、UPDATE、DELETEオペレーションを自動的に複製します。 - 主キーがないテーブルの場合、Database Migration Service は、CDC フェーズでの初期スナップショットと後続の
INSERTステートメントの移行のみをサポートします。UPDATEステートメントとDELETEステートメントは手動で移行する必要があります。移行を開始する前に、主キーのないテーブルに主キーを追加することをおすすめします。PostgreSQL データベース内で主キーのないテーブルを一覧表示するクエリを作成する方法、または
UPDATEオペレーションとDELETEオペレーションを手動で移行する方法については、 デバッグとその他のツールをご覧ください。または、クイックスタート移行フローを使用することもできます。これは、
REPLICA IDENTITYを使用して主キーのないテーブルを移行できる、簡素化された移行シナリオです。詳細については、 クイックスタート移行を使用するガイドをご覧ください。
- 主キーを持つテーブルは、すべての
- カスタム DB クラスタ パラメータ グループを構成し、クラスタに接続します。
- カスタム DB クラスタ パラメータ グループを作成し、次のパラメータを構成します。
shared_preload_librariesを設定して、pglogicalを含めます。- [
rds.logical_replication] を [1] に設定します。このパラメータにより、論理 WAL ロギングが有効になります。 - [
wal_sender_timeout] を [0] に設定します。0値は、非アクティブなレプリケーション接続を終了するタイムアウト メカニズムを無効にします。 max_replication_slotsには、移行するデータベースの数に移行ジョブの数を掛けた値に、テーブル同期用の予約分を加えた値を設定します。たとえば、移行元インスタンスに 5 つのデータベースがあり、その移行元に 2 つの移行ジョブを作成する場合、レプリケーション スロットの数は 5 × 2 = 10 以上にする必要があります。これに、他のタスクによって移行元ですでに使用されているレプリケーション スロットの数を加えます。調整されたデータダンプの並列処理設定を使用する場合は、移行ジョブの作成時にレプリケーション スロットの数を増やし、構成を確認してください。
このパラメータのデフォルト値は 10 です。
max_wal_sendersは、max_replication_slotsの値とインスタンスですでに使用されている送信者の数を合計した値以上に設定します。たとえば、
max_replication_slotsパラメータが10に設定されていて、すでに 2 つの送信者を使用している場合、同時に実行される WAL 送信者プロセスの数は 10 + 2 = 12 になります。調整されたデータダンプの並列処理設定を使用する場合は、移行ジョブの作成時に送信者の数を増やし、構成を確認してください。このパラメータのデフォルト値は 10 です。
max_worker_processesは、移行するデータベースの数にインスタンス上の既存のワーカー プロセス数を加えた数以上に設定します。調整されたデータダンプの並列処理設定を使用する場合は、接続ごとに 2 つのワーカー プロセスを追加します(最大 20 ワーカー)。このパラメータのデフォルト値は 8 です。
- DB クラスタ パラメータ グループを Aurora DB クラスタに接続します。
- カスタム DB クラスタ パラメータ グループを作成し、次のパラメータを構成します。
- パラメータ グループの変更が反映されるように、Amazon Aurora DB クラスタを再起動します。
Cloud SQL for PostgreSQL ソースを構成する
継続的な移行用に Cloud SQL for PostgreSQL ソース インスタンスを構成するには、次の手順を完了します。
- Cloud SQL for PostgreSQL の移行元の場合、Database Migration Service は、テンプレート データベース
template0とtemplate1を除く、移行元インスタンスのすべてのデータベースを移行します。 - 移行元インスタンスにデフォルトの
postgresデータベースが含まれていることを確認します。このデータベースが存在しない場合は、移行を構成する前に作成します。 - プライベート IP アドレスで構成された Cloud SQL 移行元インスタンスから、RFC 1918 以外のアドレス IP 範囲を使用する移行先の AlloyDB for PostgreSQL クラスタに移行する場合は、RFC 1918 以外の範囲を移行元インスタンスの承認済みネットワークに追加します。詳細については、 承認済みネットワークを構成するをご覧ください。
- ソース データベースにインストールされている PostgreSQL 拡張機能を確認します。Database Migration Service は、
AlloyDB for PostgreSQL でサポートされていない拡張機能を移行しません。ソース データベース オブジェクトとアプリケーション クエリが、サポートされていない拡張機能を参照していないことを確認します。続行する前に、サポートされていない拡張機能と参照をソース データベースから削除します。
pg_cron拡張機能は、Database Migration Service によって自動的に移行されませんが、AlloyDB for PostgreSQL の移行先でサポートされています。ソース データベースでpg_cronを使用している場合は、移行をプロモートした後、移行先の AlloyDB for PostgreSQL クラスタに再インストールして構成します。 - 移行元インスタンスに移行専用のユーザー アカウントを作成し、必要な権限を付与します。
- Cloud SQL ドキュメントの ユーザーを作成するページの手順に沿って、ユーザー アカウントを作成します。
- 移行ユーザー アカウントに
cloudsqlsuperuserロールを付与します。GRANT cloudsqlsuperuser TO "MIGRATION_USER_ACCOUNT_NAME";
- 移行ユーザー アカウントに、デフォルトの
postgresデータベースと、移行するすべてのデータベースに必要な権限を付与します。情報スキーマとpg_で始まるスキーマを除き、各データベースの各スキーマで次のコマンドを実行します。GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- 移行する各データベース(
template0とtemplate1を除く)にpglogical拡張機能をインストールします。以下のコマンドを実行します。CREATE EXTENSION IF NOT EXISTS pglogical;
- テーブルに主キーがあることを確認します。継続的な移行の場合、PostgreSQL の論理レプリケーションでは、変更データ キャプチャ(CDC)フェーズで
UPDATEオペレーションとDELETEオペレーションを複製するために、テーブルに主キーが必要です。- 主キーを持つテーブルは、すべての
INSERT、UPDATE、DELETEオペレーションを自動的に複製します。 - 主キーがないテーブルの場合、Database Migration Service は、CDC フェーズで初期スナップショットと後続の
INSERTステートメントを移行します。UPDATEステートメントとDELETEステートメントは手動で移行する必要があります。移行を開始する前に、主キーのないテーブルに主キーを追加することをおすすめします。PostgreSQL データベース内で主キーのないテーブルを一覧表示するクエリを作成する方法、または
UPDATEオペレーションとDELETEオペレーションを手動で移行する方法については、 デバッグとその他のツールをご覧ください。または、クイックスタート移行フローを使用することもできます。これは、
REPLICA IDENTITYを使用して主キーのないテーブルを移行できる、簡素化された移行シナリオです。詳細については、 クイックスタート移行を使用するガイドをご覧ください。
- 主キーを持つテーブルは、すべての
- Cloud SQL ソース インスタンスで次のデータベース フラグを構成します。
cloudsql.logical_decodingをonに設定します。cloudsql.enable_pglogicalをonに設定します。- [
wal_sender_timeout] を [0] に設定します。0値は、非アクティブなレプリケーション接続を終了するタイムアウト メカニズムを無効にします。 max_replication_slotsは、移行するデータベースの数に移行ジョブの数を掛けた値に、テーブル同期用の予約分を加えた値以上に設定します。たとえば、移行元インスタンスに 5 つのデータベースがあり、その移行元に 2 つの移行ジョブを作成する場合、レプリケーション スロットの数は 5 × 2 = 10 以上にする必要があります。これに、他のタスクによって移行元ですでに使用されているレプリケーション スロットの数を加えます。調整済みのデータダンプ並列処理設定を使用する場合は、移行ジョブの作成時にレプリケーション スロットの数を増やし、構成を確認してください。
このフラグのデフォルト値は 10 です。
max_wal_sendersは、max_replication_slotsの値とインスタンスですでに使用されている送信者の数を合計した値以上に設定します。たとえば、
max_replication_slotsフラグが10に設定されていて、すでに 2 つの送信者を使用している場合、同時に実行される WAL 送信者プロセスの数は 10 + 2 = 12 になります。調整済みのデータダンプ並列処理設定を使用する場合は、移行ジョブの作成時に送信者の数を増やし、構成を確認してください。このフラグのデフォルト値は 10 です。
max_worker_processesは、移行するデータベースの数にインスタンスの既存のワーカー プロセス数を加えた数以上に設定します。調整されたデータダンプの並列処理設定を使用する場合は、接続ごとに 2 つの追加ワーカー プロセス(最大 20 ワーカー)を考慮してください。このフラグのデフォルト値は 8 です。
フラグの変更の詳細については、Cloud SQL ドキュメントのデータベース フラグを構成するをご覧ください。
- 移行元の Cloud SQL インスタンスを再起動して、データベース フラグの変更を有効にします。
次のステップ
移行手順の詳細については、 AlloyDB for PostgreSQL への移行を開始するをご覧ください。
移行元インスタンスと移行先インスタンス間のネットワーク接続を計画するには、 ネットワーキングに関する考慮事項をご覧ください。