|
PITR - сценарий. Вопрос к экспертам.
|
|||
---|---|---|---|
#18+
Коллеги, хотелось бы обсудить с экспертами , все ли правильно делаю для восстановления PITR c помощью штатных средств PostgreSQL Для непрерывного архивирования WAL использую pg_recievewal (запускается как сервис systemd) Базовая копия подготавливается с помощью pg_basebackup Восстановление , по документации (версия 11) -восстанавливаю кластер из базовой копии -очищаю папку pg_wal -переношу файлы WAL из папки хранения архивов в папку pg_wal Возникает интересный момент - частичный файл .partial Что с ним делать ? Я делаю следующим образом : 1) переименовываю файл в стандартный WAL ( mov 0001000005.partial 0001000005 ) 2) дополняю нулями до 16МБ (dd ...... ) Для старта БД формирую файл recovery.conf Код: plsql 1. 2. 3.
Если не указывать строку Код: plsql 1.
Восстановление останавливается с сообщением : log2020-10-27 08:57:50.189 EDT [21737] LOG: recovery stopping before commit of transaction 576, time 2020-10-27 08:02:46.108794-04 2020-10-27 08:57:50.189 EDT [21737] LOG: recovery has paused 2020-10-27 08:57:50.189 EDT [21737] HINT: Execute pg_wal_replay_resume() to continue. В случае использования строки recovery_target_action=promote , восстановление заканчивается штатно на заданную точку во времени : log2020-10-27 09:33:51.614 EDT [23209] LOG: recovery stopping before commit of transaction 576, time 2020-10-27 08:02:46.108794-04 2020-10-27 09:33:51.614 EDT [23209] LOG: redo done at 0/4004260 2020-10-27 09:33:51.614 EDT [23209] LOG: last completed transaction was at log time 2020-10-27 08:02:11.500505-04 cp: cannot stat ‘/postgres/waldir/00000002.history’: No such file or directory 2020-10-27 09:33:51.621 EDT [23209] LOG: selected new timeline ID: 2 2020-10-27 09:33:51.753 EDT [23209] LOG: archive recovery complete cp: cannot stat ‘/postgres/waldir/00000001.history’: No such file or directory 2020-10-27 09:33:51.982 EDT [23172] LOG: database system is ready to accept connections Собственно вопросы к экспертам : 1) Все ли я правильно делаю в данном сценарии 2) Возможно ли как то автоматизировать пункт 2 (дополнение нулями до 16МБ) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 08:35 |
|
PITR - сценарий. Вопрос к экспертам.
|
|||
---|---|---|---|
#18+
По идеи Вам не надо: -очищаю папку pg_wal не нужные файлы не трогаются -переношу файлы WAL из папки хранения архивов в папку pg_wal делает команда restore_command (руками делать не нужно) recovery_target_action=promote говорит, что Вы хотите стартануть postgres, как полноценный самостоятельный сервер. Т.е. сценарий примерно такой: восстанавливаетесь из базовой копии подготавливаете recovery.conf стартуете postgres ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 10:08 |
|
PITR - сценарий. Вопрос к экспертам.
|
|||
---|---|---|---|
#18+
Guzya По идеи Вам не надо: -переношу файлы WAL из папки хранения архивов в папку pg_wal делает команда restore_command (руками делать не нужно) Да, это согласен. Просто тестовый сценарий . В реальности это шаг автоматизируется, согласен. Но вопрос - что делать с .partial ? Не дополнить нулями нельзя, будет ошибка. Не переименовать тоже нельзя. Возможно там временная точка восстановления. Возможно как то автоматизировать ? Guzya recovery_target_action=promote говорит, что Вы хотите стартануть postgres, как полноценный самостоятельный сервер. Конечно как полноценный сервер. Это ведь сценарий восстановления после аварии в конфигурации stand-alone Если не указывать recovery_target_action=promote восстановление останавливается ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 10:49 |
|
PITR - сценарий. Вопрос к экспертам.
|
|||
---|---|---|---|
#18+
Если машина с которой льются wal не совсем погибла, можно оттуда взять нужный wal. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 10:56 |
|
PITR - сценарий. Вопрос к экспертам.
|
|||
---|---|---|---|
#18+
Guzya, предполагается , что машина погибла полностью. В наличии только базовая РК и архивные файлы WAL ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 10:58 |
|
PITR - сценарий. Вопрос к экспертам.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 10:59 |
|
PITR - сценарий. Вопрос к экспертам.
|
|||
---|---|---|---|
#18+
Guzya, именно эту ссылку и использовал, но там считать цифры надо ручками авторfor example using ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 11:02 |
|
PITR - сценарий. Вопрос к экспертам.
|
|||
---|---|---|---|
#18+
примерный код Код: sql 1. 2. 3. 4. 5. 6.
Тут dd будет долго думать потому что будем писать много по одному байту. По хорошему надо сделать в два захода dd, первый пишет по bs=1024 count=целочисленное деление ($raznica/1024) а второй по bs=1 count=остаток от деления $raznica/1024 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 12:32 |
|
PITR - сценарий. Вопрос к экспертам.
|
|||
---|---|---|---|
#18+
rinace, Я бы сказал что у вас по 1) все верно а вот на счет 2) возникают вопросы откуда вообще возникла такая задача. Потому что если требуется оперативный failover на текущее состояние после отказа мастера - для этого нужна реплика (hot standby) а не base backup + wal archive. Base backup + wal archive используется в случае когда надо восстановиться на какую то точку в прошлом, а если точка в прошлом то вопрос что делать с .partial - он не критичен потому что этот файл не требуется для решения задачи. Т.е. с моей точки зрения вопрос 2 возник потому что вы пытаетесь решить задачу не подходящими (и не предназначенными) для этого средствами. И ответ на вопрос два будет "не делайте так". -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 12:48 |
|
PITR - сценарий. Вопрос к экспертам.
|
|||
---|---|---|---|
#18+
Maxim Boguk, Постановка задачи стандартная : 1) Есть сервер БД stand-alone . 2) Нужно обеспечить резервное копирование и восстановление на точку во времени штатными средствами из коробки . Зачем нужно восстановление на момент времени ? Ну хотя бы для развертывания тестовой базы . ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 12:52 |
|
PITR - сценарий. Вопрос к экспертам.
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 12:58 |
|
PITR - сценарий. Вопрос к экспертам.
|
|||
---|---|---|---|
#18+
rinace Maxim Boguk, Постановка задачи стандартная : 1) Есть сервер БД stand-alone . 2) Нужно обеспечить резервное копирование и восстановление на точку во времени штатными средствами из коробки . Зачем нужно восстановление на момент времени ? Ну хотя бы для развертывания тестовой базы . Ну вот сочетание 1+2 оно из категории задач "не делайте так", я понимаю что всякое бывает в жизни но лучше объяснить заказчику что так не надо делать. Потому что например потом быстро вылезет вопрос - а почем восстановление после сбоя stand-alone мастера занимает 5 часов (а то и 20+ часов, у меня рекорд 63 часа на восстановление из base backup 3х дневной давности и wal_archive). Восстановление на точку времени - да нормально, оперативный failover без (с минимальной) потерей транзакций - нет не нормально. А вот для развертывания тестовой базы - потеря тех транзакций что были в .partial - не критична (я не могу придумать сценарий когда это было бы критично). -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 13:05 |
|
|
start [/forum/search_topic.php?author=%D0%BF%D1%80%D0%B5%D0%B2%D0%B5%D0%B4%21&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 720ms |
total: | 875ms |
0 / 0 |