概要
このページには、AlloyDB のデバッグと使用に役立つスクリプトが含まれています。
主キー以外のテーブルの UPDATE オペレーションと DELETE オペレーションを移行する
主キーのないテーブルの場合、Database Migration Service は、変更データ キャプチャ(CDC)フェーズでの初期スナップショットと INSERT
ステートメントの移行をサポートします。
不足している UPDATE
プロセスと DELETE
プロセスを更新するには、このドキュメントの後半のセクションをご覧ください。
ソースと AlloyDB の移行先クラスタ間で欠落しているデータを検出する
- 主キーのないテーブルを特定します。
select tab.table_schema, tab.table_name from information_schema.tables tab left join information_schema.table_constraints tco on tab.table_schema = tco.table_schema and tab.table_name = tco.table_name and tco.constraint_type = 'PRIMARY KEY' where tab.table_type = 'BASE TABLE' and tab.table_schema not in ('pg_catalog', 'information_schema', 'pglogical') and tco.constraint_name is null order by table_schema, table_name;
- 移行を開始する前に、主キーのないすべてのテーブルについて、次のクエリを使用して更新または削除があるかどうかを確認します。
ここで、SELECT schemaname, relname, n_tup_ins, n_tup_upd, n_tup_del FROM pg_stat_user_tables WHERE schemaname NOT IN ('pglogical', 'pg_catalog', 'information_schema');
n_tup_ins
: 挿入された行数n_tup_upd
: 更新された行数(HOT で更新された行を含む)n_tup_del
: 削除された行数
- これらの結果を別のテーブルまたはファイルに保存します。
- 移行の設定が完了したら、クエリをもう一度実行します。
- 結果をステップ 3 の結果と比較します。
移行中にソースの n_tup_upd
または n_tup_del
の値に違いがある場合、ソースで更新または削除が行われる可能性があります。
移行元から AlloyDB の移行先インスタンスにデータを手動で移行する
ソース インスタンスと AlloyDB の移行先インスタンスの間に不一致が検出された場合は、次のいずれかのオプションを使用してデータを移行できます。
オプション 1: ソースと AlloyDB の宛先間でデータを手動で比較し、適切な SQL クエリを実行して、ソースとレプリカの間で異なるデータのみを更新します。
オプション 2: 主キーのないテーブルに対して
pg_dump
とpg_restore
を実行します。詳細については、pg_dump を使用してオンプレミスの PostgreSQL サーバーからデータをエクスポートするをご覧ください。オプション 3: Postgres
COPY
コマンドを使用してデータを移行します。詳細については、PostgreSQL のドキュメントをご覧ください。この手順では、レプリカ VM が移行元の VM に接続できる必要があります。