AWS Database Migration Serviceを使用して、RDS PostgresインスタンスからAurora MySQLインスタンスにデータを移行しようとしています。
Database Migration Serviceでは、ソースPostgres DBでwal_levelをlogicalとして設定する必要があります。しかし、完了すると、Postgresはインスタンスが使用できなくなるまで、多くのディスク領域を消費し始めました。
WALログはどのくらいの期間保持されますか?ディスクスペースの使用が制限されるように有効にできる他の設定はありますか?
これはAWS DMSの問題です。
DMSは最近、PostgreSQLソースからのレプリケーション用の機能WALハートビート[1](ダミークエリを実行)を追加したため、アイドル状態の論理レプリケーションスロットが古いWALログを保持しないため、ソースでストレージがフルになる可能性があります。このハートビートは、restart_lsnを動かし続け、ストレージがいっぱいになるシナリオを防ぎます。
追加の接続属性の下に、これを追加してください:
heartbeatenable = Y; heartbeatFrequency = 1
HeartbeatEnable – trueに設定(デフォルトはfalse)HeartbeatSchema –ハートビートアーティファクトのスキーマ(デフォルトはpublic)HeartbeatFrequency –分単位のハートビート頻度(デフォルトは5、最小値は1)
タスクを単独で停止してもレプリケーションスロットはクリアされないため、タスクが停止状態の場合でもストレージの使用量は増加します。スロットをクリアするには、タスクを削除する必要があります。
レプリケーションスロットをクリアするには、次のコマンドを使用します-
SELECT * FROM pg_replication_slots ; --finds all replication slots
select pg_drop_replication_slot('NameOfSlot'); -- you will get the name of the slot from the first command
参照:[1] PostgreSQLソースWALハートビート https://docs.aws.Amazon.com/dms/latest/userguide/CHAP_ReleaseNotes.html#CHAP_ReleaseNotes.DMS2