#postgresql #replication
#postgresql #репликация
Вопрос:
postgresql 10.14@ubuntu18.04
У меня есть основная база данных и реплицированная база данных. Проблема в том, что размер каталога, содержащего репликацию, слишком велик. Это около 7 ТБ, с другой стороны, каталог, содержащий primary, составляет 1,5 ТБ. Но результат исследования du внутри этих каталогов выглядит одинаково. Отличается только размер каталога, и я не могу найти, в чем причина.
Результат du приведен ниже.
для основной базы данных
du -sh database
1.5T database
для первичной внутренней базы данных
du -sh *
4.0K PG_VERSION
1.5T base
456K global
4.0K pg_commit_ts
4.0K pg_dynshmem
16K pg_logical
28K pg_multixact
12K pg_notify
12K pg_replslot
4.0K pg_serial
4.0K pg_snapshots
4.0K pg_stat
4.0K pg_stat_tmp
12K pg_subtrans
4.0K pg_tblspc
4.0K pg_twophase
273M pg_wal
80K pg_xact
4.0K postgresql.auto.conf
4.0K postmaster.opts
4.0K postmaster.pid
для базы данных репликации
du -sh database
7.2T database
для репликации
du -sh *
4.0K PG_VERSION
1.5T base
456K global
4.0K pg_commit_ts
4.0K pg_dynshmem
16K pg_logical
28K pg_multixact
12K pg_notify
12K pg_replslot
4.0K pg_serial
4.0K pg_snapshots
4.0K pg_stat
4.0K pg_stat_tmp
12K pg_subtrans
4.0K pg_tblspc
4.0K pg_twophase
5.8T pg_wal
80K pg_xact
4.0K postgresql.auto.conf
4.0K postmaster.opts
4.0K postmaster.pid
4.0K recovery.conf
Есть ли какой-нибудь способ выяснить, в чем причина?
Как я могу уменьшить размер данных, которые имеет репликация?
Спасибо!
Комментарии:
1. Файл журнала PostgreSQL на стороне ожидания расскажет вам, почему у PostgreSQL возникла проблема с удалением старых файлов WAL из
pg_wal
.
Ответ №1:
5.8T pg_wal
Я думаю, вы нашли причину.
Когда вы настраивали реплику, вы, вероятно, скопировали каталог pg_replslot, чего вы не должны были делать. Итак, теперь реплика ожидает, когда ее собственная каскадная реплика подключится к ней для чтения WAL, который она сохраняет, но для этого нет реплики. Удалите этот каталог в реплике и перезапустите реплику.
В качестве альтернативы, возможно, вы установили archive_mode в значение всегда, но ваша archive_command не работает с репликой.
Комментарии:
1. Спасибо за ваш повтор, я просто не смог обнаружить, что pg_wal имеет размер 5,8 ТБ. Я неправильно понял, что это 5,8 ГБ. У меня есть один вопрос, упомянутый вами каталог — это каталог pg_wal? Итак, конкретно то, что я должен сделать, похоже на это? [1.остановка службы sudo postgresql 2. запуск sudo rm pg_wal/* 3.запуск службы sudo postgresql] Это правильно? Или, может быть, упомянутый вами каталог — pg_replslot?
Ответ №2:
Я делаю ниже, чтобы удалить pg_wal.
- подключитесь к репликации
- удалите слот репликации с помощью pg_drop_replication_slot
после этого размер pg_wal постепенно уменьшался.