powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / восстановиться из сохраненых wal после pg_resetwal
11 сообщений из 11, страница 1 из 1
восстановиться из сохраненых wal после pg_resetwal
    #39823146
nins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здраствуйте
Подскажите пожалуйста как восстановить БД на определенное время после того как:
1) были проблемы с wal-файлами
2) запуск pg_resetwal на контрольную точку на сутки назад из-за 1)
3) запуск БД
4) данные остались суточной давности
5) удалось получить копии wal-файлов

Как не потерять сутки работ пользователей?
...
Рейтинг: 0 / 0
восстановиться из сохраненых wal после pg_resetwal
    #39823149
nins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дополнение:

1) бэкап есть 4-х суточной давности
2) БД не стартовала и требовалось Найти и сбросить поврежденный xlog-файл
3) Провела операции:
pg_controldata $PGDATA | grep -i NextOID
pg_controldata $PGDATA | grep -i NextXID
pg_resetwal -o 11111111 -x 22222222 -f $PGDATA
Журнал предзаписи сброшен

на более чем 2 суток назад :-(

4) на сервере нашла копии файлов из pg_wal
более свежие, полусуточной давности

Можно ли из них восстановить данные?
...
Рейтинг: 0 / 0
восстановиться из сохраненых wal после pg_resetwal
    #39823154
nins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Postgres Pro Standard 10
...
Рейтинг: 0 / 0
восстановиться из сохраненых wal после pg_resetwal
    #39823157
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nins3) запуск БД
Никак.
Более того учтите, что у вас и сейчас данные непонятно какие, а не суточной давности. Потому что именно это resetwal и предназначен делать. Тем более в -f режиме. Цитируя core разработчика postgresql:
Michael PaquierIt is so easy to screw things up with pg_resetwal that we ought to rename it pg_please_corrupt_my_data.
...
Рейтинг: 0 / 0
восстановиться из сохраненых wal после pg_resetwal
    #39823161
nins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стало быть я могу только восстановиться из бэкапа и потерять 3 суток работы?
...
Рейтинг: 0 / 0
восстановиться из сохраненых wal после pg_resetwal
    #39823162
nins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
восстановиться из сохраненых wal после pg_resetwal
    #39823164
nins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БД остановлена была сразу после старта и проверки, что данные за сутки пропали.
Может скопировать все файлы куда-нибудь, а wal-файлы подложить, создать $PGDATA/recovery.conf с содержанием:

авторcp путь_до_директории_где_лежат_найденные_wal_файлы/%f %p'

и стартовать БД?

ОС Linux
...
Рейтинг: 0 / 0
восстановиться из сохраненых wal после pg_resetwal
    #39823170
nins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно возникло недопонимание.
pg_resetwal сбросил журнал предзаписи
на более древний, зафиксированный и существовавший момент времени.
БД стартанула.
Данные читались.
И тут же БД была остановлена.
Ситуация, когда сбрасывался журнал на нечто не существующее - ее просто нет.

Так все-таки, можно ли в этом случае
подложив найденные забэкапленные wal файлы
и, создав $PGDATA/recovery.conf с нужным содержанием, восстановить данные?
В директории pg_exact лежат файлы на ту же дату, что и найденные, забэкапленные wal-файлы.

И еще вопрос, если файлы из директории $PGDATA были просто скопированы в другое место на всякий случай,
и если не получится ничего, то я просто верну их на место и будет ли БД в состоянии как сейчас?
...
Рейтинг: 0 / 0
восстановиться из сохраненых wal после pg_resetwal
    #39823171
nins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот это поможет?

24.3. Непрерывное архивирование и восстановление на момент времени (Point-in-Time Recovery, PITR)
https://postgrespro.ru/docs/postgrespro/10/continuous-archiving
...
Рейтинг: 0 / 0
восстановиться из сохраненых wal после pg_resetwal
    #39823191
nins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Восстанавливаю из бэкапа.
Вывод: следите за дисками, коллеги.
...
Рейтинг: 0 / 0
восстановиться из сохраненых wal после pg_resetwal
    #39823225
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ninsвот это поможет?

24.3. Непрерывное архивирование и восстановление на момент времени (Point-in-Time Recovery, PITR)
Поможет. Если у вас есть basebackup от некоторого момента в прошлом + все WAL от начала снятия basebackup до необходимого места восстановления. Повреждённый datadir после аварии для этого не годится.

Бекапы вещь такая, о которой надо заботиться заранее.

ninsСитуация, когда сбрасывался журнал на нечто не существующее - ее просто нет.
Есть. После pg_resetwal в datadir неконсистентная каша гарантирована. Именно это и предназначен делать pg_resetwal. Непойми что в данных, но как-то запустить и попытаться вытащить хоть что-нибудь и руками потом разбираться, что из этого имеет смысл.
Неудачное название утилиты получилось. Надо было называть pg_please_corrupt_my_data. Уж сколько всего люди сломали отчего полагая, что это какая-то магия, а не прямая инструкция сломать весь кластер.

ninspg_resetwal сбросил журнал предзаписи
на более древний, зафиксированный и существовавший момент времени
И сломали транзакционную видимость до невосстановимого состояния.
Это by design. resetwal прямым текстом обещает в мануале, что после его выполнения вы не получите консистентного состояния.
Эту утилиту можно выполнять только и исключительно имея копию datadir. И, конечно, с полным пониманием что это такое, что произойдёт и как это отразится на механике работы СУБД.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / восстановиться из сохраненых wal после pg_resetwal
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]