Postgres 9.4 wal_level=logical 增加磁盘空间

Ara*_*n R 5 replication migration postgresql-9.4 write-ahead-logging amazon-rds

我正在尝试使用 AWS Database Migration Service 将数据从 RDS Postgres 实例迁移到 Aurora MySQL 实例。

数据库迁移服务要求将wal_level设置为源 Postgres DB 中的逻辑值。但是完成后,Postgres 开始消耗大量磁盘空间,以至于实例变得无法使用。

WAL 日志保留多长时间?是否可以启用其他设置来限制磁盘空间的使用?

Ara*_*n R 5

这是 AWS DMS 问题。

DMS 最近添加了一个功能 WAL heartbeat [1](运行虚拟查询),用于从 PostgreSQL 源复制,因此空闲的逻辑复制槽不会保留旧的 WAL 日志,这可能会导致源上的存储已满情况。此心跳使 restart_lsn 保持移动并防止存储已满的情况。

  1. 登录 DMS 控制台。
  2. 停止与源端点相关的所有任务
  3. 单击左侧选择窗格中的“端点”。
  4. 根据任务选择您正在使用的源端点。
  5. 单击屏幕顶部的“修改”。
  6. 展开“高级”。
  7. 在额外的连接属性下,请添加:

    heartbeatenable=Y;heartbeatFrequency=1

HeartbeatEnable – 设置为 true(默认为 false) HeartbeatSchema – 心跳工件的架构(默认为 public) HeartbeatFrequency – 以分钟为单位的心跳频率(默认为 5,最小值为 1)

  1. 点击“修改”。您将被自动重定向到端点屏幕。
  2. 再次选择端点并单击“测试连接”。
  3. 它应该自动开始测试。等待它显示“成功”。

单独停止任务不会清除复制槽,所以当任务处于停止状态时存储使用量仍然会增加,您需要删除任务来清除槽。

要清除复制槽,请使用以下命令 -

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
Run Code Online (Sandbox Code Playgroud)

参考:[1] PostgreSQL 源 WAL 心跳 https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReleaseNotes.html#CHAP_ReleaseNotes.DMS230