powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
6 сообщений из 6, страница 1 из 1
Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
    #40094218
Фотография Takurava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаем восстановление из бэкапа, восстанавливаем файлы, а потом указываем команду restore_command, откуда брать wal-журналы в файле recovery.conf
Код: xml
1.
2.
3.
recovery_target_time = '2021-08-27 17:34:00'
recovery_target_action = 'pause'
restore_command = 'cp -i /backup/db_name/%f %p'


На момент запуска инстанса ситуация в pg_wal такая (в бэкапе много wal-журналов от всех линий): 9-я линия кончилась на файле СВ, есть partial и началась линия A
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
-rw------- 1 postgres postgres 16777216 Aug 31 22:44 0000000900001D19000000C9
-rw------- 1 postgres postgres 16777216 Aug 31 22:40 0000000900001D19000000CA
-rw------- 1 postgres postgres 16777216 Aug 31 23:43 0000000900001D19000000CB.partial
-rw------- 1 postgres postgres      364 Aug 31 23:46 00000009.history
-rw------- 1 postgres postgres 16777216 Aug 31 23:49 0000000A00001D19000000CB
-rw------- 1 postgres postgres 16777216 Aug 31 23:49 0000000A00001D19000000CC
-rw------- 1 postgres postgres      410 Aug 31 23:46 0000000A.history
-rw------- 1 postgres postgres      457 Aug 31 23:46 0000000B.history
-rw------- 1 postgres postgres      504 Aug 31 23:46 0000000C.history
-rw------- 1 postgres postgres      551 Aug 31 23:46 0000000D.history


В 0000000A.history написано что 9-ая линия кончается на "1D19/CB45BA70"
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
-bash-4.2$ cat /pgsys/chatbot_dp/pg_wal/0000000A.history
1       EEC/B000098     no recovery target specified
2       EF2/1A000098    no recovery target specified
3       1058/4C000098   no recovery target specified
4       14D4/540E9FD0   no recovery target specified
5       151D/EDADEAE0   no recovery target specified
6       1781/B1000098   no recovery target specified
7       17EE/A7D65CF0   no recovery target specified
8       19F1/114078D8   no recovery target specified
9       1D19/CB45BA70   no recovery target specified


Но при восстановлении инстанс доходит до файла CA, не находит файл CB и не видя что есть partial, начинает городить свою линию
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
< 2021-08-31 21:07:01.117 MSK 31969  >LOG:  restored log file "0000000900001D19000000CA" from archive
cp: cannot stat ‘/backup/db_name/0000000900001D19000000CB’: No such file or directory
< 2021-08-31 21:07:01.200 MSK 31969  >LOG:  redo done at 1D19/CAFFD730
< 2021-08-31 21:07:01.200 MSK 31969  >LOG:  last completed transaction was at log time 2021-08-27 17:34:34.573373+03
< 2021-08-31 21:07:01.453 MSK 31969  >LOG:  restored log file "0000000900001D19000000CA" from archive
< 2021-08-31 21:07:01.504 MSK 31969  >LOG:  restored log file "0000000A.history" from archive
< 2021-08-31 21:07:01.521 MSK 31969  >LOG:  restored log file "0000000B.history" from archive
< 2021-08-31 21:07:01.543 MSK 31969  >LOG:  restored log file "0000000C.history" from archive
< 2021-08-31 21:07:01.562 MSK 31969  >LOG:  restored log file "0000000D.history" from archive
cp: cannot stat ‘/backup/db_name/0000000E.history’: No such file or directory
< 2021-08-31 21:07:01.577 MSK 31969  >LOG:  selected new timeline ID: 14
< 2021-08-31 21:07:01.767 MSK 31969  >LOG:  archive recovery complete
< 2021-08-31 21:07:01.801 MSK 31969  >LOG:  restored log file "00000009.history" from archive
< 2021-08-31 21:07:46.683 MSK 31961  >LOG:  database system is ready to accept connections



Как понять почему так происходит, и как заставить postgres восстанавливаться через все timeline, какие есть в бэкапе?
...
Рейтинг: 0 / 0
Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
    #40094239
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Takurava,
recovery_target_timeline=latest попробуйте добавить если у вас относительно старая версия.
https://www.postgresql.org/docs/13/runtime-config-wal.html#RUNTIME-CONFIG-WAL-RECOVERY-TARGET



--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
    #40094265
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы задали

Код: sql
1.
recovery_target_time = '2021-08-27 17:34:00'



и восстановление делает, то что ему сказали

Код: sql
1.
< 2021-08-31 21:07:01.200 MSK 31969  >LOG:  last completed transaction was at log time 2021-08-27 17:34:34.573373+03



далее при запуске (promote), постгрес создает новую линию времени (максимальная имеющаяся линия времени + 1).

Код: sql
1.
2.
3.
4.
< 2021-08-31 21:07:01.562 MSK 31969  >LOG:  restored log file "0000000D.history" from archive  --------   последняя\максимальная линия времени, которую нашел
cp: cannot stat ‘/backup/db_name/0000000E.history’: No such file or directory                                 --------- не нашел линию E (14)
< 2021-08-31 21:07:01.577 MSK 31969  >LOG:  selected new timeline ID: 14                                 --------- перешел на линию E (14)
< 2021-08-31 21:07:01.767 MSK 31969  >LOG:  archive recovery complete
...
Рейтинг: 0 / 0
Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
    #40094292
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Takurava
и как заставить postgres восстанавливаться через все timeline, какие есть в бэкапе?

Поскольку вы говорите про recovery.conf, но не упоминаете в нём необходимый таймлайн - значит у вас pg11 как максимум, где recovery_target_timeline по умолчанию "The default is to recover along the same timeline that was current when the base backup was taken."
latest по дефолту он стал позднее, после того как recovery.conf я выпилил.
...
Рейтинг: 0 / 0
Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
    #40094410
Фотография Takurava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, сейчас попробую.
...
Рейтинг: 0 / 0
Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
    #40094442
Фотография Takurava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, заработало!

Да, из темы backup&recovery у меня опыт только по backup, а по recovery совсем мало...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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