PostgreSQL データベースを移行元として使用する場合の既知の制限事項は次のとおりです。
pglogical
拡張機能は、PostgreSQL 12 以降の生成された列のレプリケーションをサポートしていません。テーブル構造(DDL)の変更は、標準の DDL コマンドでは複製されません。レプリケーションに使用される
pglogical
拡張機能を使用して実行されたコマンドでのみ複製されます。これには、enum
型の変更が含まれます。たとえば、
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
を実行します。新しい AlloyDB の宛先の
SEQUENCE
状態(last_value
など)は、移行元のSEQUENCE
状態と異なる場合があります。UNLOGGED
テーブルとTEMPORARY
テーブルは複製されず、複製できません。ラージ オブジェクト データ型はサポートされていません。詳しくは、移行の忠実性のセクションをご覧ください。
- 移行できるのは、AlloyDB が PostgreSQL でサポートしている拡張機能とプロシージャル言語のみです。
Database Migration Service は、復元モードのリードレプリカからの移行をサポートしていません。
AWS SCT 拡張パックが適用されている Amazon RDS ソースは、Database Migration Service でサポートされていません。
- AlloyDB でサポートされている拡張機能のインストール時に PostgreSQL データベースにインストールされる関数を除き、C で記述されたユーザー定義関数は移行できません。
ソース データベースに他の拡張機能や手続き型言語が存在する場合、またはそのバージョンがサポートされていない場合、移行ジョブをテストまたは開始すると失敗します。
移行ジョブの開始後に追加されたデータベースは移行されません。
- Database Migration Service を使用して移行する場合、特定のテーブルやスキーマを選択することはできません。Database Migration Service は、次のものを除き、すべてのテーブルとスキーマを移行します。
- 情報スキーマ(
information_schema
)。 pg
で始まるテーブル(pg_catalog
など)。pg
で始まる PostgreSQL カタログの完全なリストについては、PostgreSQL ドキュメントの PostgreSQL システム カタログをご覧ください。- ユーザーとユーザーロールに関する情報は移行されません。
- 情報スキーマ(
暗号化されたデータベースの復号に顧客管理の暗号鍵が必要で、Database Migration Service がその鍵にアクセスできない場合、データベースを移行できません。
ただし、顧客データが
pgcrypto
拡張機能で暗号化されている場合は、Database Migration Service を使用してデータを移行できます(AlloyDB が拡張機能をサポートしているため)。Database Migration Service は、暗号化された Amazon Aurora または Amazon RDS データベースからのデータの移行もサポートしています。これらのデータベースは、サービス内で復号を透過的に処理するためです。詳細については、Amazon Aurora リソースの暗号化と Amazon RDS リソースの暗号化をご覧ください。
移行中、宛先 AlloyDB データベースは書き込み可能であり、必要に応じて DDL の変更を適用できます。移行プロセスが中断したり、データの完全性に影響する可能性があるため、データベース構成やテーブル構造を変更しないように注意してください。
トリガーの動作は、構成方法によって異なります。デフォルトの動作ではトリガーされませんが、
ALTER EVENT TRIGGER
ステートメントまたはALTER TABLE
ステートメントを使用して構成され、トリガー状態が replica または always に設定されている場合は、レプリケーション中にレプリカでトリガーされます。セキュリティ定義関数は、AlloyDB プライマリの
alloydbexternalsync
によって作成されます。ユーザーが実行すると、alloydbsuperuser
ロールとalloydbreplica
ロールを持つalloydbexternalsync
の権限で実行されます。セキュリティ定義関数は、一部のユーザーのみに制限することをおすすめします。そのためには、ユーザーはデフォルトの PUBLIC 権限を取り消し、実行権限を選択的に付与する必要があります。Private Service Connect インターフェースの接続方法は、既存の移行先インスタンスへの移行でのみサポートされています。プライベート IP 接続を使用して新しい宛先インスタンスに移行する場合は、VPC ピアリングを使用します。
既存の宛先クラスタへの移行の制限事項
- 既存の移行先クラスタは空であるか、システム構成データのみが含まれている必要があります。ユーザーデータ(テーブルなど)を含む既存の宛先クラスタへの移行はサポートされていません。
- 宛先クラスタごとに構成できる移行ジョブは 1 つだけです。
- セカンダリ クラスタを含むクラスタへの移行はサポートされていません。
- 読み取りプール インスタンスを含むクラスタへの移行はサポートされています。
AlloyDB for PostgreSQL クラスタとインスタンスの詳細については、AlloyDB for PostgreSQL の概要をご覧ください。
割り当て
- 同時に最大 2,000 個の接続プロファイルと 1,000 個の移行ジョブを維持できます。この上限に達した後で他の作業を行うには、移行ジョブ(完了したジョブを含む)または接続プロファイルを削除する必要があります。