你可以看到这些问题
我的问题可能有点不同。当发生数据更改时,我使用https://github.com/jiamo/python-psql-replication进行从postgres到es的复制。当数据发生变化时,事务日志就可以了。但是,当数据不再改变时,Transactioin日志就会继续这样下去:
09/23-09/25是周末(因此不再有数据变化,事务日志继续进行)
我有一些技巧,想通过更新crontab中的一些数据来解决这个问题。但是,当数据更改时,事务日志似乎不会立即下降(这需要更多的时间来验证此方法)。
我现在的问题是:有人能解释这一现象并提供更好的解决方法吗?
添加更多关于诀窍的内容。
=> SELECT pg_current_wal_lsn();
pg_current_wal_lsn
--------------------
CD/1C0005C0
(1 row)
两个小时后:
=> SELECT pg_current_wal_lsn();
pg_current_wal_lsn
--------------------
CD/41000410
当没有插入/更新/删除活动时。pg_current_wal_lsn仍在持续增长。
pg的位置就像这样
=> select * from pg_replication_slots;
slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restart_lsn | confirmed_flush_lsn
--------------+----------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+---------------------
wal2json_rds | wal2json | logical | 16400 | test | f | t | 11270 | | 593776 | CD/140235B8 | CD/140235B8
confirmed_flush_lsn
比pg_current_wal_lsn
小得多。
诀窍(这里是日志),我使用crontab更新了一个简单的行,但在此之后数据不再改变。confirmed_flush_lsn一直在CD/140235B8
host:25a5743b67db time:2018-10-01 09:23:21.865489 before sleep wal_end 875955403896 hex CB/F302BC78 next_lsn 876123392024 hex CB/FD060818
host:25a5743b67db time:2018-10-01 09:23:32.087501 before sleep wal_end 875955403896 hex CB/F302BC78 next_lsn 876123392024 hex CB/FD060818
host:25a5743b67db time:2018-10-01 09:23:38.705198 future len tmp_list is 1
host:25a5743b67db time:2018-10-01 09:23:38.763092 success bulk 1
host:25a5743b67db time:2018-10-01 09:23:38.763327 queue 0 getters 1 putters 0
host:25a5743b67db time:2018-10-01 09:23:38.763503 queue begin to wait......
host:25a5743b67db time:2018-10-01 09:23:42.310556 before sleep wal_end 880803984024 hex CD/14023298 next_lsn 880803984824 hex CD/140235B8
host:25a5743b67db time:2018-10-01 09:23:52.531998 before sleep wal_end 880803984024 hex CD/14023298 next_lsn 880803984824 hex CD/140235B8
我想要做的是,在没有其他数据更改时(通过更新行的状态列)增加confirmed_flush_lsn
。但它似乎增加了价值,但不让RDS删除一些事务日志。
-更新
我改变了更改两行的技巧,而不是一行(这意味着有更多的数据更改),这一次事务日志可以减少,但仍然不能减少太多,就像这个png。在周末,我的技巧奏效了,它减少了事务日志的大小。但不像正常的一天,有更多的数据变化,大小可以缩小到0。
发布于 2018-10-01 14:37:18
在CDC模式下,AWS的数据迁移服务(DMS)创建一个复制槽并订阅它,就像您正在做的事情一样。它包括一个选项,用于发送常规的虚拟查询,以确保复制槽位置提前。我不清楚它是如何实现的,但我相信它会为您指明正确的方向。在DMS发行说明中搜索"WAL心搏“。
https://stackoverflow.com/questions/52589058
复制相似问题