AWS RDS Postgresql Журналы транзакций продолжают работать, когда нет изменений данных? - PullRequest
0 голосов
/ 01 октября 2018

Вы можете увидеть эти проблемы

  1. https://www.reddit.com/r/aws/comments/7snob5/postgresql_transaction_logs_fill_up_storage_till/

  2. https://dba.stackexchange.com/questions/173267/aws-rds-postgres-logical-replication?rq=1

И моя проблема может бытьнемного по-другому.Я использую https://github.com/jiamo/python-psql-replication, чтобы выполнить репликацию из postgres в es при изменении данных.Когда есть изменение данных, Журналы транзакций в порядке.Но когда данные больше не меняются, журналы транзакций продолжают работать так:

enter image description here

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, но после этого данные больше не меняются.И подтвержденный_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 удалять некоторые журналы транзакций.

-------- update ------------

Я изменил трюк, чтобы изменить две строки вместо одной строки (то есть немного изменить данные), на этот раз журнал транзакций может быть уменьшен, но все же не слишком уменьшен, как этот png.В выходные дни работает мой трюк, который уменьшает размер журнала транзакций.Но не так, как в обычный день, когда происходит большее изменение данных, а размер можно уменьшить до 0. enter image description here

1 Ответ

0 голосов
/ 01 октября 2018

В режиме CDC AWS Data Migration Service (DMS) создает слот репликации и подписывается на него, очень похоже на то, что вы делаете.Он включает в себя возможность отправлять обычные фиктивные запросы, чтобы убедиться, что расположение слота репликации увеличивается.Я не уверен точно, как это реализовано, но я уверен, что это укажет вам правильное направление.Ищите «WAL heartbeat» в примечаниях к выпуску DMS .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...