チェック詳細
移行タイプとして増分移行を選択した場合、以下の条件をチェックする必要があります。そうでない場合、検証に失敗します。
ソースデータベースのwal_levelはlogicalである必要があります。
ソースデータベースのmax_replication_slotsおよびmax_wal_sendersパラメータは、移行対象のデータベース総数より大きい必要があります(追加接続数を確保)。
ソースデータベースの移行対象テーブルでは、persistence属性がp(永続テーブル)である必要があります。そうでない場合、replicationがサポートされず、論理移行も実行できません。
移行対象テーブルにunlogged tableが存在する場合、移行できません。
主キーのないテーブルの移行は一般的に推奨されません。データ結果の不一致を引き起こす可能性があります。移行対象のテーブルに主キーがなく、かつREPLICA IDENTITY属性の設定がFULLでない場合、検証タスクは警告を発します。
移行対象のテーブルに主キーと一意インデックスがあり、かつREPLICA IDENTITY属性の設定がFULLでない場合、検証タスクは警告を発します。
移行対象のテーブルに主キーがなく、複数の一意インデックスがあり、かつREPLICA IDENTITY属性の設定がFULLでない場合、検証タスクは警告を発します。
修復方法
wal_level/max_replication_slots/max_wal_sendersパラメータの変更
パラメータwal_level、max_replication_slots、max_wal_sendersを変更する方法は以下の通りです。
1. ソースデータベースにログインします。
説明:
ソースデータベースが自社構築データベースの場合、データベースの稼働サーバーにログインし、データベースのデータメインディレクトリに移動する必要があります。通常は$PGDATAです。
ソースデータベースが他のクラウドデータベースの場合、関連するクラウドプラットフォームのパラメータ変更方法を使用してください。
ターゲットインスタンスのパラメータを変更する必要がある場合は、オンラインサポートで処理してください。 2. 通常、postgresql.confファイルに入り、このファイルを開いて、対応するパラメータを変更します。
wal_level = logical
max_replication_slots = 10 //実際の状況に応じて変更します
max_wal_senders = 10 //実際の状況に応じて変更します
3. 変更完了後、データベースインスタンスを再起動します。
4. データベースインスタンスにログインし、以下のコマンドを使用してパラメータ値が正しく設定されているかどうかを確認します:
postgres=> select name,setting from pg_settings where name='wal_level';
name | setting
-----------+---------
wal_level | logical
(1 row)
postgres=> select name,setting from pg_settings where name='max_replication_slots';
name | setting
-----------------------+---------
max_replication_slots | 10
(1 row)
postgres=> select name,setting from pg_settings where name='max_wal_senders';
name | setting
-----------------+---------
max_wal_senders | 10
(1 row)
5. 検証タスクを再実行します。
移行対象テーブルのREPLICA IDENTITY属性の変更
主キーのないテーブルの移行は一般的に推奨されません。データ結果の不一致を引き起こす可能性があります。移行対象のテーブルに主キーがなく、かつREPLICA IDENTITY属性の設定がFULLでない場合、検証タスクは警告を発します。
移行対象のテーブルに主キーと一意インデックスがあり、かつREPLICA IDENTITY属性の設定がFULLでない場合、検証タスクは警告を発します。
移行対象のテーブルに主キーがなく、複数の一意インデックスがあり、かつREPLICA IDENTITY属性の設定がFULLでない場合、検証タスクは警告を発します。
警告が表示された場合、ユーザーは以下の方法を参照してテーブルの属性パラメータを変更することをお勧めします。
説明:
テーブルのREPLICA IDENTITY属性を変更すると、一時的にテーブルがロックされ、ソースデータベースの業務に影響を与える可能性があります。業務の低ピーク時に変更することをお勧めします。
検証タスクの警告を無視した場合、DTSは移行中に以下のコマンドを自動的に実行します。
ALTER TABLE schemaName.tableName REPLICA IDENTITY FULL;