概要
データベースを Cloud SQL に移行する前に、この移行シナリオの既知の制限事項を考慮してください。
PostgreSQL データベースをソースとして使用する場合の既知の制限事項は次のとおりです。
pglogical拡張機能は、PostgreSQL 12 以降で 生成された列 のレプリケーションをサポートしていません。テーブル構造(DDL)の変更は、標準の DDL コマンドではレプリケートされません。レプリケーションに使用される
pglogical拡張機能を使用して実行されるコマンドでのみレプリケートされます。これには 型の変更が含まれます。enumたとえば、
pglogicalには、pglogical.replicate_ddl_command両方のソース データベースとレプリカで一貫したポイントで DDL を実行できる関数 が用意されています。ソースでこのコマンドを実行するユーザーは、レプリカにすでに存在している必要があります。新しいテーブルのデータをレプリケートするには、
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 for 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 を使用して移行する場合、特定のテーブルやスキーマを選択することはできません。
Database Migration Service は、次のものを除くすべてのテーブルとスキーマを移行します。
- 情報スキーマ(
information_schema)。 pgで始まるテーブル(pg_catalogなど)。pgで始まる PostgreSQL カタログの完全なリストについては、PostgreSQL ドキュメントの PostgreSQL システム カタログ をご覧ください。- ユーザーとユーザーロールに関する情報は移行されません。
- 情報スキーマ(
暗号化されたデータベースで、データベースの復号にカスタマー マネージド暗号鍵が必要であり、Database Migration Service が鍵にアクセスできない場合、データベースを移行できません。
ただし、顧客データが
pgcrypto拡張機能で暗号化されている場合、Database Migration Service でデータを移行できます(Cloud SQL が拡張機能をサポートしているため)。Database Migration Service は、暗号化された Amazon Aurora データベースまたは Amazon RDS データベースからのデータの移行もサポートしています。これらのデータベースは、サービス内で復号を透過的に処理するためです。詳細については、Amazon Aurora リソースの暗号化とAmazon RDS リソースの暗号化をご覧ください。
移行中、移行先の Cloud SQL データベースは書き込み可能であるため、必要に応じて DDL の変更を適用できます。移行プロセスが中断したり、データの完全性に影響する可能性があるため、データベース構成やテーブル構造を変更しないように注意してください。
トリガーの動作は、構成方法によって異なります。デフォルトの動作ではトリガーされませんが、
ALTER EVENT TRIGGERステートメントまたはALTER TABLEステートメントを使用して構成され、トリガーの状態がレプリカまたは常に設定されている場合は、レプリケーション中にレプリカでトリガーされます。セキュリティ定義関数は、Cloud SQL レプリカの
cloudsqlexternalsyncによって作成されます。ユーザーが実行すると、cloudsqlsuperuserロールとcloudsqlreplicaロールを持つcloudsqlexternalsyncの権限で実行されます。セキュリティ定義関数の使用は、一部のユーザーに制限することをおすすめします。そのためには、ユーザーはデフォルトの PUBLIC 権限を取り消し、実行権限を選択的に付与する必要があります。Cloud SQL は、カスタマイズされたテーブルスペースをサポートしていません。カスタマイズされたテーブルスペース内のすべてのデータは、Cloud SQL 移行先インスタンスの
pg_defaultテーブルスペースに移行されます。Private Service Connect インターフェースの接続方法 は、既存の移行先インスタンスへの移行でのみサポートされています。 プライベート IP 接続を使用して新しい移行先インスタンスに移行する場合は、VPC ピアリングを使用します。
既存の移行先インスタンスへの移行の制限事項
- 既存の移行先インスタンスには、移行先インスタンスの作成時に自動的に設定されるデフォルトのシステム データベースのみを含めることができます。ユーザーデータ(システム スキーマのテーブルやデータベースなど)を含む既存の移行先インスタンスへの移行はサポートされていません。
既存の移行先インスタンスに追加のデータがあるために問題が発生した場合は、移行先インスタンスのデータベースをクリアして、移行ジョブを再試行してください。 既存の移行先インスタンスから追加のデータをクリアするをご覧ください。
- 移行先インスタンスごとに構成できる移行ジョブは 1 つのみです。
- 移行できるのは、スタンドアロンの Cloud SQL インスタンスのみです。外部サーバー レプリカへの移行はサポートされていません。
- インスタンスをプロモートした後は、ポイントインタイム リカバリを有効にする必要があります。
- インスタンスのバックアップ設定がカスタマイズされている場合(たとえば、カスタム バックアップ ロケーションなど)は、インスタンスをプロモートした後、バックアップ設定を再度カスタマイズする必要があります。プロモーション プロセス中に、Cloud SQL はバックアップ設定をデフォルト値にリセットします。
- Terraform ユーザーの場合: Database Migration Service は、移行先インスタンスのバックアップと復元の設定を変更します。これにより、移行先インスタンスの設定が、プロビジョニングに使用した Terraform 構成と異なる場合があります。この問題が発生した場合は、 問題の診断のガイダンスに沿って操作してください。
割り当て
- 同時に最大 2,000 個の接続プロファイルと 1,000 個の移行ジョブを維持できます。この上限に達した後で他の作業を行うには、移行ジョブ(完了したジョブを含む)または接続プロファイルを削除する必要があります。
- 既存の移行先インスタンスには、移行先インスタンスの作成時に自動的に設定されるデフォルトのシステム データベースのみを含めることができます。ユーザーデータ(システム スキーマのテーブルやデータベースなど)を含む既存の移行先インスタンスへの移行はサポートされていません。