Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую / 6 сообщений из 6, страница 1 из 1
01.09.2021, 01:22
    #40094218
Takurava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
Делаем восстановление из бэкапа, восстанавливаем файлы, а потом указываем команду 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
01.09.2021, 09:02
    #40094239
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
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
01.09.2021, 10:18
    #40094265
Guzya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
Вы задали

Код: 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
01.09.2021, 11:18
    #40094292
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
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
01.09.2021, 14:45
    #40094410
Takurava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
Спасибо, сейчас попробую.
...
Рейтинг: 0 / 0
01.09.2021, 15:38
    #40094442
Takurava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres при восстановлении из бэкапа не идёт по имеющимся timeline, а создаёт свою, новую
Спасибо, заработало!

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


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