Kenny00
@Kenny00

Как корректно запустить базу postgresql после полного удаления каталога wal?

Совершил глупость, теперь база не стартует:
< 2021-04-27 23:59:48.130 MSK >ОШИБКА:  запрошенный сегмент WAL 0000000100000007000000A1 уже удалён
< 2021-04-27 23:59:53.136 MSK >ОШИБКА:  запрошенный сегмент WAL 0000000100000007000000A1 уже удалён
< 2021-04-27 23:59:58.140 MSK >ОШИБКА:  запрошенный сегмент WAL 0000000100000007000000A1 уже удалён
< 2021-05-04 13:06:12.899 MSK >СООБЩЕНИЕ:  система БД была выключена: 2021-04-30 17:47:05 MSK
< 2021-05-04 13:06:12.920 MSK >СООБЩЕНИЕ:  неверная запись первичной контрольной точки
< 2021-05-04 13:06:12.934 MSK >СООБЩЕНИЕ:  неверная запись вторичной контрольной точки
< 2021-05-04 13:06:12.934 MSK >ПАНИКА:  не удалось считать правильную запись контрольной точки
< 2021-05-04 13:06:12.935 MSK >СООБЩЕНИЕ:  стартовый процесс (PID 32168) был завершён по сигналу 6: Aborted

Решил удалить слот репликации от не используемого приложения, так как накопилось очень много wal файлов.
Удалил слот, а файлы остались. Я остановил кластер штатно.
Далее вручную почистил в ноль папку /var/lib/postgresql/10/ut/pg_wal
Копии базы конечно не сделал в надежде что во время остановки всё из wal записалось в базу.

Подскажите как можно починить базу? И как нужно было сделать по уму если валы от слота не удаляются при удалении слота.

Distributor ID: Debian
Description:    Debian GNU/Linux 9.13 (stretch)
Release:        9.13
Codename:       stretch

PostgreSQL 10.5 (Ubuntu 10.5-24.1C) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609, 64-bit
  • Вопрос задан
  • 1761 просмотр
Решения вопроса 2
@RazdoR
pg_resetwal ваш выбор
Ответ написан
Комментировать
Melkij
@Melkij
PostgreSQL DBA
Корректно - абсолютно никак. WAL критичная часть базы.

Некорректно, без всяких гарантий, но на clean shutdown базе можно надеяться без потери данных - pg_resetwal. Перед использованием сделайте бекап всего PGDATA ( /var/lib/postgresql/10/ut/ в вашем случае судя по пути до pg_wal). После старта базы - pg_dumpall и initdb всего кластера заново, как прямым текстом указано в документации к pg_resetwal.

как нужно было сделать по уму если валы от слота не удаляются при удалении слота.

Дождаться или сделать руками чекпойнт.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы