概要
データベースを Cloud SQL に移行する前に、この移行シナリオの既知の制限事項を検討してください。
PostgreSQL データベースを移行元として使用する場合の既知の制限事項は次のとおりです。
pglogical
拡張機能は、PostgreSQL 12 以降の生成列のレプリケーションをサポートしていません。テーブル構造(DDL)の変更は、標準の DDL コマンドでは複製されません。レプリケーションに使用される
pglogical
拡張機能を使用して実行されたコマンドによってのみ複製されます。たとえば、
pglogical
には、ソース データベースとレプリカの両方で一貫したポイントで DDL を実行できる関数pglogical.replicate_ddl_command
があります。ソースでこのコマンドを実行するユーザーは、レプリカにすでに存在している必要があります。新しいテーブルのデータを複製するには、
pglogical.replication_set_add_table
コマンドを使用して、新しいテーブルを既存のレプリケーション セットに追加する必要があります。移行中の DDL レプリケーションの詳細については、移行の忠実度のセクションをご覧ください。
主キーのないテーブルの場合、Database Migration Service は、変更データ キャプチャ(CDC)フェーズでの初期スナップショットと
INSERT
ステートメントの移行をサポートします。UPDATE
ステートメントとDELETE
ステートメントは手動で移行する必要があります。Database Migration Service は、マテリアライズド ビューからデータを移行しません。移行するのはビュー スキーマのみです。ビューにデータを入力するには、
REFRESH MATERIALIZED VIEW view_name
コマンドを実行します。新しい Cloud SQL の宛先の
SEQUENCE
状態(last_value
など)は、ソースのSEQUENCE
状態と異なる場合があります。UNLOGGED
テーブルとTEMPORARY
テーブルは複製されず、複製できません。ラージ オブジェクト データ型はサポートされていません。詳しくは、移行の忠実性のセクションをご覧ください。
移行できるのは、Cloud SQL が PostgreSQL でサポートしている拡張機能と手続き型言語のみです。Database Migration Service は、Cloud SQL でサポートされていない拡張機能を移行しません。これらの拡張機能が存在しても移行はブロックされませんが、スムーズに移行プロセスを進めるために、オブジェクトやアプリケーションがサポートされていない拡張機能を参照していないことを確認してください。続行する前に、これらの拡張機能と参照を移行元データベースから削除することをおすすめします。
pg_cron
拡張機能(または拡張機能に関連付けられたcron
設定)は Database Migration Service によって移行されませんが、Cloud SQL for PostgreSQL の移行先ではサポートされています。移行元データベースでpg_cron
拡張機能を使用する場合は、移行が完了した後に移行先インスタンスに再インストールできます。
Database Migration Service は、復元モードのリードレプリカからの移行をサポートしていません。
Database Migration Service は、AWS SCT 拡張機能パックが適用されている Amazon RDS ソースをサポートしていません。
- C で記述されたユーザー定義関数は移行できません。ただし、Cloud SQL でサポートされている拡張機能をインストールするときに PostgreSQL データベースにインストールされる関数は移行できます。
ソース データベースに他の拡張機能や手続き型言語が存在する場合、またはそのバージョンがサポートされていない場合、移行ジョブをテストまたは開始すると、ジョブは失敗します。
移行ジョブの開始後に追加されたデータベースは移行されません。
Database Migration Service を使用して移行する場合、特定のデータベース オブジェクト(データベース、テーブル、スキーマなど)を選択することはできません。データベース移行の一環として、すべてのデータベースとスキーマのすべてのテーブルが移行されます。ただし、次のスキーマは除きます。
- 情報スキーマ(
information_schema
) pg
で始まるスキーマ(pg_catalog
など。システム テーブルとすべての組み込みデータ型、関数、演算子を含むスキーマで、すべてのデータベースに自動的に存在します)。その結果、ユーザーとユーザーロールに関する情報は移行されません。pg
で始まるスキーマの一覧をご覧ください。
- 情報スキーマ(
暗号化されたデータベースの復号に顧客管理の暗号鍵が必要な場合、Database Migration Service がその鍵にアクセスできない場合、データベースを移行できません。
ただし、お客様のデータが
pgcrypto
拡張機能で暗号化されている場合は、Cloud SQL が拡張機能をサポートしているため、Database Migration Service でデータを移行できます。Database Migration Service は、暗号化された Amazon Aurora または Amazon RDS データベースからのデータの移行もサポートしています。これらのデータベースは、サービス内で暗号化を透過的に処理します。詳細については、Amazon Aurora リソースの暗号化とAmazon RDS リソースの暗号化をご覧ください。
移行中、移行先の Cloud SQL データベースは書き込み可能であるため、必要に応じて DDL の変更を適用できます。移行プロセスを中断したり、データの整合性に影響を与えたりする可能性があるデータベース構成やテーブル構造を変更しないように注意してください。
トリガーの動作は、トリガーの構成方法によって異なります。デフォルトの動作ではトリガーされませんが、
ALTER EVENT TRIGGER
ステートメントまたはALTER TABLE
ステートメントを使用して構成され、トリガー状態が replica または always に設定されている場合、レプリケーション中にレプリカでトリガーされます。セキュリティ定義子を持つ関数は、Cloud SQL レプリカの
cloudsqlexternalsync
によって作成されます。ユーザーによって実行されると、cloudsqlsuperuser
ロールとcloudsqlreplica
ロールを持つcloudsqlexternalsync
の権限で実行されます。セキュリティ定義関数の使用を一部のユーザーに限定することをおすすめします。これを行うには、デフォルトの PUBLIC 権限を取り消してから、実行権限を選択的に付与する必要があります。Cloud SQL はカスタマイズされたテーブルスペースをサポートしていません。カスタマイズされたテーブルスペース内のデータはすべて、Cloud SQL の宛先インスタンスの
pg_default
テーブルスペースに移行されます。
既存の宛先インスタンスへの移行の制限事項
- 既存の移行先インスタンスは空であるか、システム構成データのみを含む必要があります。ユーザーデータ(テーブルなど)を含む既存の宛先インスタンスへの移行はサポートされていません。
既存の移行先インスタンスに余分なデータが原因で問題が発生した場合は、移行先インスタンスのデータベースを消去して、移行ジョブを再試行します。既存の移行先インスタンスから余分なデータを消去するをご覧ください。
- 移行先インスタンスごとに構成できる移行ジョブは 1 つだけです。
- 移行できるのは、スタンドアロンの Cloud SQL インスタンスに限られます。外部サーバー レプリカへの移行はサポートされていません。
- Private Service Connect が有効になっている Cloud SQL インスタンスへのデータの移行はサポートされていません。
- インスタンスを昇格させたら、ポイントインタイム リカバリをオンにする必要があります。
- インスタンスのバックアップ設定がカスタマイズされている場合(カスタム バックアップ ロケーションなど)は、インスタンスをプロモートした後、バックアップ設定を再度カスタマイズする必要があります。プロモーション プロセス中に、Cloud SQL はバックアップ設定をデフォルト値にリセットします。
- Terraform ユーザーの場合: Database Migration Service は、移行先インスタンスのバックアップと復元の設定を変更します。これにより、宛先インスタンスの設定が、プロビジョニングに使用した Terraform 構成と異なる可能性があります。この問題が発生した場合は、問題の診断のガイダンスに沿って対応してください。
割り当て
- 同時に最大 2,000 個の接続プロファイルと 1,000 個の移行ジョブを維持できます。この上限に達した後で他の作業を行うには、移行ジョブ(完了したジョブを含む)または接続プロファイルを削除できます。