Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / восстановление из логов / 20 сообщений из 20, страница 1 из 1
13.07.2020, 09:15
    #39978790
parallax113
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
привет

postgresql11

подскажите, как правильно делать восстановление на момент времени?
делаю архив логов

вот настройки postgres.conf
===========================
Код: css
1.
2.
3.
4.
wal_level = archive
archive_mode = on            
archive_command = 'test ! -f /bkp/logs/%f && cp %p /bkp/logs/%f'
archive_timeout = 60  



в тестовой бд - удаляю запись

/bkp/logs/
==========
Код: css
1.
2.
Jul 12 21:52 0000000D000000000000002D
Jul 13 09:40 0000000D000000000000002E



в recovery.conf хочу вернуться на 12 21:52, когда запись ещё была

Код: css
1.
2.
restore_command = 'cp /bkp/logs/%f %p'
recovery_target_time = '2020-07-12 21:52:00'




в итоге recovery.conf переименовался recovery.done, но восстановление на то время не случилось, т.е. удалённая запись не восстановилась
...
Рейтинг: 0 / 0
13.07.2020, 10:28
    #39978814
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
parallax113,

какой basebackup использовали для восстановления?
Ну и смотрите в лог.
...
Рейтинг: 0 / 0
13.07.2020, 11:12
    #39978833
parallax113
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
Melkij
parallax113,

какой basebackup использовали для восстановления?
Ну и смотрите в лог.

pg_basebackup не делаю, просто редактирую recovery.conf чтобы вернуться на состояние вчера

Код: css
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
< 2020-07-13 11:59:42.904 +04 >СООБЩЕНИЕ:  получен запрос на быстрое выключение
< 2020-07-13 11:59:42.904 +04 >СООБЩЕНИЕ:  прерывание всех активных транзакций
< 2020-07-13 11:59:42.907 +04 >СООБЩЕНИЕ:  фоновый процесс "logical replication launcher" (PID 18317) завершился с кодом выхода 1
< 2020-07-13 11:59:42.908 +04 >СООБЩЕНИЕ:  выключение
< 2020-07-13 11:59:42.979 +04 >СООБЩЕНИЕ:  система БД выключена
< 2020-07-13 12:00:29.751 +04 >СООБЩЕНИЕ:  система БД была выключена: 2020-07-13 11:59:42 +04
< 2020-07-13 12:00:29.752 +04 >СООБЩЕНИЕ:  начинается восстановление точки во времени до 2020-07-12 21:52:00+04
< 2020-07-13 12:00:29.756 +04 >СООБЩЕНИЕ:  файл журнала "0000000E.history" восстановлен из архива
cp: не удалось выполнить stat для «/bkp/logs/0000000E0000000000000032»: Нет такого файла или каталога
< 2020-07-13 12:00:29.761 +04 >СООБЩЕНИЕ:  согласованное состояние восстановления достигнуто по смещению 0/32000098
< 2020-07-13 12:00:29.761 +04 >СООБЩЕНИЕ:  неверная длина записи по смещению 0/32000098: ожидалось 24, получено 0
< 2020-07-13 12:00:29.761 +04 >СООБЩЕНИЕ:  данные REDO не требуются
< 2020-07-13 12:00:29.762 +04 >СООБЩЕНИЕ:  система БД готова к подключениям в режиме "только чтение"
cp: не удалось выполнить stat для «/bkp/logs/0000000E0000000000000032»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000F.history»: Нет такого файла или каталога
< 2020-07-13 12:00:29.771 +04 >СООБЩЕНИЕ:  выбранный ID новой линии времени: 15
< 2020-07-13 12:00:29.799 +04 >СООБЩЕНИЕ:  восстановление архива завершено
< 2020-07-13 12:00:29.804 +04 >СООБЩЕНИЕ:  файл журнала "0000000E.history" восстановлен из архива
< 2020-07-13 12:00:29.908 +04 >СООБЩЕНИЕ:  система БД готова принимать подключения



вот содержимое /bkp/logs:
Код: css
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Jul 12 21:47 0000000D000000000000002C.00000028.backup
Jul 12 21:52 0000000D000000000000002D
Jul 13 09:40 0000000D000000000000002E
Jul 13 09:43 0000000D000000000000002F
Jul 13 09:44 0000000D0000000000000030
Jul 13 09:45 0000000D0000000000000031.partial
Jul 10 19:31 0000000D.history
Jul 13 11:59 0000000E0000000000000031
Jul 13 12:00 0000000E0000000000000032.partial
Jul 13 09:45 0000000E.history
Jul 13 12:00 0000000F.history



зачем идёт обращение к 0000000E0000000000000032, если лог который указывает на время это 0000000D000000000000002D ?

или что-то не работает или я чего-то не понимаю
...
Рейтинг: 0 / 0
13.07.2020, 11:28
    #39978840
mefman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
parallax113
Melkij
parallax113,

какой basebackup использовали для восстановления?
Ну и смотрите в лог.

pg_basebackup не делаю, просто редактирую recovery.conf чтобы вернуться на состояние вчера
или что-то не работает или я чего-то не понимаю

Это так не работает.
Восстановиться "взад" без бекапа невозможно.
Вчерашний бекап + все архивлоги до текущего момента = возможность восстановиться с точки бекапа на любой точку до текущего момента.
...
Рейтинг: 0 / 0
13.07.2020, 11:28
    #39978841
parallax113
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
подсовываю во такой backup_label :
Код: css
1.
2.
3.
4.
5.
6.
7.
START WAL LOCATION: 0/24000028 (file 000000060000000000000024)
CHECKPOINT LOCATION: 0/24000098
BACKUP METHOD: streamed
BACKUP FROM: master
START TIME: 2020-07-10 17:20:43 +04
LABEL: pg_basebackup test backup
START TIMELINE: 6



Код: css
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
< 2020-07-13 12:19:17.627 +04 >СООБЩЕНИЕ:  файл журнала "000000060000000000000024" восстановлен из архива
cp: не удалось выполнить stat для «/bkp/logs/00000006.history»: Нет такого файла или каталога
< 2020-07-13 12:19:17.636 +04 >СООБЩЕНИЕ:  файл журнала "00000007.history" восстановлен из архива
< 2020-07-13 12:19:17.639 +04 >СООБЩЕНИЕ:  файл журнала "00000008.history" восстановлен из архива
< 2020-07-13 12:19:17.642 +04 >СООБЩЕНИЕ:  файл журнала "00000009.history" восстановлен из архива
< 2020-07-13 12:19:17.646 +04 >СООБЩЕНИЕ:  файл журнала "0000000A.history" восстановлен из архива
< 2020-07-13 12:19:17.649 +04 >СООБЩЕНИЕ:  файл журнала "0000000B.history" восстановлен из архива
< 2020-07-13 12:19:17.653 +04 >СООБЩЕНИЕ:  файл журнала "0000000C.history" восстановлен из архива
< 2020-07-13 12:19:17.658 +04 >СООБЩЕНИЕ:  файл журнала "0000000D.history" восстановлен из архива
< 2020-07-13 12:19:17.662 +04 >СООБЩЕНИЕ:  файл журнала "0000000E.history" восстановлен из архива
< 2020-07-13 12:19:17.664 +04 >СООБЩЕНИЕ:  запись REDO начинается со смещения 0/24000028
< 2020-07-13 12:19:17.664 +04 >СООБЩЕНИЕ:  согласованное состояние восстановления достигнуто по смещению 0/24000130
< 2020-07-13 12:19:17.665 +04 >СООБЩЕНИЕ:  система БД готова к подключениям в режиме "только чтение"
cp: не удалось выполнить stat для «/bkp/logs/0000000F0000000000000025»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000E0000000000000025»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000D0000000000000025»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000C0000000000000025»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000B0000000000000025»: Нет такого файла или каталога
< 2020-07-13 12:19:17.709 +04 >СООБЩЕНИЕ:  файл журнала "000000060000000000000025" восстановлен из архива
cp: не удалось выполнить stat для «/bkp/logs/0000000F0000000000000026»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000E0000000000000026»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000D0000000000000026»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000C0000000000000026»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000B0000000000000026»: Нет такого файла или каталога
< 2020-07-13 12:19:17.753 +04 >СООБЩЕНИЕ:  файл журнала "000000060000000000000026" восстановлен из архива
cp: не удалось выполнить stat для «/bkp/logs/0000000F0000000000000027»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000E0000000000000027»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000D0000000000000027»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000C0000000000000027»: Нет такого файла или каталога
< 2020-07-13 12:19:17.794 +04 >СООБЩЕНИЕ:  файл журнала "0000000B0000000000000027" восстановлен из архива
cp: не удалось выполнить stat для «/bkp/logs/0000000F0000000000000028»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000E0000000000000028»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000D0000000000000028»: Нет такого файла или каталога
< 2020-07-13 12:19:17.829 +04 >СООБЩЕНИЕ:  файл журнала "0000000C0000000000000028" восстановлен из архива
cp: не удалось выполнить stat для «/bkp/logs/0000000F0000000000000029»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000E0000000000000029»: Нет такого файла или каталога
< 2020-07-13 12:19:17.871 +04 >СООБЩЕНИЕ:  файл журнала "0000000D0000000000000029" восстановлен из архива
cp: не удалось выполнить stat для «/bkp/logs/0000000F000000000000002A»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000E000000000000002A»: Нет такого файла или каталога
< 2020-07-13 12:19:17.914 +04 >СООБЩЕНИЕ:  файл журнала "0000000D000000000000002A" восстановлен из архива
cp: не удалось выполнить stat для «/bkp/logs/0000000F000000000000002B»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000E000000000000002B»: Нет такого файла или каталога
< 2020-07-13 12:19:17.951 +04 >СООБЩЕНИЕ:  файл журнала "0000000D000000000000002B" восстановлен из архива
cp: не удалось выполнить stat для «/bkp/logs/0000000F000000000000002C»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000E000000000000002C»: Нет такого файла или каталога
< 2020-07-13 12:19:17.988 +04 >СООБЩЕНИЕ:  файл журнала "0000000D000000000000002C" восстановлен из архива
cp: не удалось выполнить stat для «/bkp/logs/0000000F000000000000002D»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000E000000000000002D»: Нет такого файла или каталога
< 2020-07-13 12:19:18.028 +04 >СООБЩЕНИЕ:  файл журнала "0000000D000000000000002D" восстановлен из архива
cp: не удалось выполнить stat для «/bkp/logs/0000000F000000000000002E»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000E000000000000002E»: Нет такого файла или каталога
< 2020-07-13 12:19:18.061 +04 >СООБЩЕНИЕ:  файл журнала "0000000D000000000000002E" восстановлен из архива
cp: не удалось выполнить stat для «/bkp/logs/0000000F000000000000002F»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000E000000000000002F»: Нет такого файла или каталога
< 2020-07-13 12:19:18.094 +04 >СООБЩЕНИЕ:  файл журнала "0000000D000000000000002F" восстановлен из архива
cp: не удалось выполнить stat для «/bkp/logs/0000000F0000000000000030»: Нет такого файла или каталога
cp: не удалось выполнить stat для «/bkp/logs/0000000E0000000000000030»: Нет такого файла или каталога
< 2020-07-13 12:19:18.130 +04 >СООБЩЕНИЕ:  файл журнала "0000000D0000000000000030" восстановлен из архива
< 2020-07-13 12:19:18.131 +04 >СООБЩЕНИЕ:  восстановление останавливается перед фиксированием транзакции 6345, время 2020-07-13 09:44:00.228874+04
< 2020-07-13 12:19:18.131 +04 >СООБЩЕНИЕ:  восстановление приостановлено
< 2020-07-13 12:19:18.131 +04 >ПОДСКАЗКА:  Выполните pg_wal_replay_resume() для продолжения.



вот полный /bkp/logs
Код: css
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Jul 10 17:20 000000060000000000000023
Jul 10 17:20 000000060000000000000024
Jul 10 17:20 000000060000000000000024.00000028.backup
Jul 10 17:22 000000060000000000000025
Jul 10 17:22 000000060000000000000026
Jul 10 17:28 000000070000000000000027
Jul 10 17:27 00000007.history
Jul 10 17:33 00000008.history
Jul 10 19:23 000000090000000000000027
Jul 10 19:23 000000090000000000000028
Jul 10 19:22 00000009.history
Jul 10 19:25 0000000A0000000000000027
Jul 10 19:24 0000000A.history
Jul 10 19:28 0000000B0000000000000027
Jul 10 19:25 0000000B.history
Jul 10 19:30 0000000C0000000000000028
Jul 10 19:30 0000000C.history
Jul 10 19:41 0000000D0000000000000029
Jul 12 12:49 0000000D000000000000002A
Jul 12 21:47 0000000D000000000000002B
Jul 12 21:47 0000000D000000000000002C
Jul 12 21:47 0000000D000000000000002C.00000028.backup
Jul 12 21:52 0000000D000000000000002D
Jul 13 09:40 0000000D000000000000002E
Jul 13 09:43 0000000D000000000000002F
Jul 13 09:44 0000000D0000000000000030
Jul 13 09:45 0000000D0000000000000031.partial
Jul 10 19:31 0000000D.history
Jul 13 11:59 0000000E0000000000000031
Jul 13 12:00 0000000E0000000000000032.partial
Jul 13 09:45 0000000E.history
Jul 13 12:14 0000000F0000000000000032
Jul 13 12:00 0000000F.history
...
Рейтинг: 0 / 0
13.07.2020, 11:34
    #39978845
parallax113
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
mefman
parallax113
пропущено...

pg_basebackup не делаю, просто редактирую recovery.conf чтобы вернуться на состояние вчера
или что-то не работает или я чего-то не понимаю

Это так не работает.
Восстановиться "взад" без бекапа невозможно.
Вчерашний бекап + все архивлоги до текущего момента = возможность восстановиться с точки бекапа на любой точку до текущего момента.


т.е. разворачиваю базовую копию и выставляю нужное время в recovery.conf?
спасибо, я понял
...
Рейтинг: 0 / 0
13.07.2020, 12:05
    #39978868
mefman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
parallax113
mefman
пропущено...

Это так не работает.
Восстановиться "взад" без бекапа невозможно.
Вчерашний бекап + все архивлоги до текущего момента = возможность восстановиться с точки бекапа на любой точку до текущего момента.


т.е. разворачиваю базовую копию и выставляю нужное время в recovery.conf?

да. так.
...
Рейтинг: 0 / 0
13.07.2020, 12:57
    #39978912
parallax113
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
такой ещё вопрос:
есть такие архивные копии логов

Код: css
1.
2.
3.
4.
5.
6.
7.
000000130000000000000027
000000130000000000000028
000000130000000000000029
000000130000000000000029.00000028.backup
00000013000000000000002A
00000013000000000000002B
00000013000000000000002C



здесь я могу восстановиться только с позиции не позднее 130000000000000029.00000028.backup,
т.е. в recovery нужно указывать 13000000000000002A, 13000000000000002B или 13000000000000002С ?
...
Рейтинг: 0 / 0
13.07.2020, 14:15
    #39978976
mefman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
parallax113

т.е. в recovery нужно указывать 13000000000000002A, 13000000000000002B или 13000000000000002С ?

не понял. что значит указывать?
recovery_target_time - время выставите.
Выставлять время - рекомендованный вариант в ПЖ. В отличии от оракла, где рекомендуется целью восстановления ставить scn
...
Рейтинг: 0 / 0
13.07.2020, 17:03
    #39979105
parallax113
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
mefman
parallax113

т.е. в recovery нужно указывать 13000000000000002A, 13000000000000002B или 13000000000000002С ?

не понял. что значит указывать?
recovery_target_time - время выставите.
Выставлять время - рекомендованный вариант в ПЖ. В отличии от оракла, где рекомендуется целью восстановления ставить scn

имею ввиду, что например не получиться сделать восстановление позже START TIME: 2020-07-13 13:46:23 +04, которое указано в backup_label базового архива, даже если после этого времени был сброс логов в архив(archive_command)
получается нужно опять делать базовый архив(pg_basebackup) и восстанавливаться уже от него?

правильно понимаю?
...
Рейтинг: 0 / 0
13.07.2020, 17:10
    #39979110
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
parallax113
mefman
пропущено...

не понял. что значит указывать?
recovery_target_time - время выставите.
Выставлять время - рекомендованный вариант в ПЖ. В отличии от оракла, где рекомендуется целью восстановления ставить scn

имею ввиду, что например не получиться сделать восстановление позже START TIME: 2020-07-13 13:46:23 +04, которое указано в backup_label базового архива, даже если после этого времени был сброс логов в архив(archive_command)
получается нужно опять делать базовый архив(pg_basebackup) и восстанавливаться уже от него?

правильно понимаю?


Не получится сделать восстановления на РАНЬШЕ ЧЕМ 'START TIME: 2020-07-13 13:46:23 +04, которое указано в backup_label';
...
Рейтинг: 0 / 0
13.07.2020, 17:24
    #39979114
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
parallax113,

Кажется есть проблема в понимании происходящего при восстановлении по WAL - это не undo, где мы берём базу и отменяет изменения. Это наоборот redo, где мы берём достаточно старый basebackup и к нему применяем все wal до интересующей точки восстановления.
...
Рейтинг: 0 / 0
14.07.2020, 10:41
    #39979339
parallax113
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
Melkij
parallax113,

Кажется есть проблема в понимании происходящего при восстановлении по WAL

это точно

правильно понимаю, что когда я сделал базовый архив, восстановиться я смогу только на него, т.е. на последнюю запечатлённую им транзакцию, но не раньше, плюс на все последующие логи которые будут копиться в течении дня?

Maxim Boguk

Не получится сделать восстановления на РАНЬШЕ ЧЕМ 'START TIME: 2020-07-13 13:46:23 +04, которое указано в backup_label';



смотрите:

1. в 09:07 внёс запись№1 в бд
2. сделал pg_switch_log()
3. сделал pg_basebackup -D /backup/file_backup --wal-method=none -F t -z -U postgres -w -c fast -l "test backup"
4. в 10:20 внёс запись№2
5. сделал pg_switch_log()

пробую восстановиться с базового бекапа.
1. в recovery.conf казываю время 9:30 и восстанвливается только запись№1, но мне предложили ещё сделать pg_wal_replay_resume()
(тут как я понял не важно какое время указываю, данные восстановятся последние на момент бекапа)
2. второй раз восстанавливаюсь и в recovery.conf пишу время 10:30, восстанавливаются записи№1 и №2

в 11:05 в базу вношу ещё запись№3, делаю pg_switch_log()
опять восстанавливаюсь с базового архива на время 11:20, но запись№3 не восстанавливается

что я делаю не так? по идее то она должна была восстановиться
...
Рейтинг: 0 / 0
14.07.2020, 11:28
    #39979358
mefman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
parallax113

что я делаю не так?

Таки что-то делаешь не так.
Поскольку вероятность нарушения принципа долговечности единожды зафиксированной транзакции в СУБД стремится к 0.
...
Рейтинг: 0 / 0
15.07.2020, 09:53
    #39979746
parallax113
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
mefman
parallax113

что я делаю не так?

Таки что-то делаешь не так.
Поскольку вероятность нарушения принципа долговечности единожды зафиксированной транзакции в СУБД стремится к 0.


мне не понятно как это работает:
сегодня утром добавил запись, переключил сегмент(switch_wal)
вoсстановился с timeline = "latest" - всё хорошо

далее создал индекс внёс ещё данные и повторно восстановился на latest, но восстановились данные за вчера
в логе пишет что последняя транзакция была вчера

это или я чего-то не понимаю или что-то не правильно работает
может ли 1С-совский 11-ый постгрес фокусы такие делать ?

ещё при восстановлении в pg_log пишет, что не может найти какие-то файлы history и ещё какие-то, хотя они вроде есть
...
Рейтинг: 0 / 0
15.07.2020, 10:06
    #39979753
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
parallax113
mefman
пропущено...

Таки что-то делаешь не так.
Поскольку вероятность нарушения принципа долговечности единожды зафиксированной транзакции в СУБД стремится к 0.


мне не понятно как это работает:
сегодня утром добавил запись, переключил сегмент(switch_wal)
вoсстановился с timeline = "latest" - всё хорошо

далее создал индекс внёс ещё данные и повторно восстановился на latest, но восстановились данные за вчера
в логе пишет что последняя транзакция была вчера

это или я чего-то не понимаю или что-то не правильно работает
может ли 1С-совский 11-ый постгрес фокусы такие делать ?

ещё при восстановлении в pg_log пишет, что не может найти какие-то файлы history и ещё какие-то, хотя они вроде есть


Поскольку вы ни команды которыми все делали ни recovery.conf не показали в полной последовательности - вам помочь не реально.
Основной вопрос а что значит 'и повторно восстановился на latest' - какая именно была процедура?
скорее всего именно там у вас косяк какой то
...
Рейтинг: 0 / 0
15.07.2020, 12:12
    #39979839
parallax113
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
Maxim Boguk


Поскольку вы ни команды которыми все делали ни recovery.conf не показали в полной последовательности - вам помочь не реально.
Основной вопрос а что значит 'и повторно восстановился на latest' - какая именно была процедура?
скорее всего именно там у вас косяк какой то


postgresql.conf
Код: css
1.
2.
3.
wal_level = archive
archive_mode = on
archive_command = 'test ! -f /backup/logs/%f && cp %p /backupl/logs/%f'



предварительно бекап сделал такой коммандой:
pg_basebackup -D /backup/file_backup --port=5432 --wal-method=none -F t -z -U postgres -w -c fast -l "test backup"

backup.lable
START WAL LOCATION: 0/5000028 (file 000000010000000000000005)
CHECKPOINT LOCATION: 0/5000060
BACKUP METHOD: streamed
BACKUP FROM: master
START TIME: 2020-07-15 11:22:12 +04
LABEL: test backup
START TIMELINE: 1



$ ll /backup/logs/
total 262184
Jul 15 11:19 000000010000000000000003
Jul 15 11:22 000000010000000000000004
Jul 15 11:22 000000010000000000000005
Jul 15 11:22 000000010000000000000005.00000028.backup
Jul 15 11:28 000000010000000000000006
Jul 15 11:49 000000010000000000000007
Jul 15 12:01 000000020000000000000008
Jul 15 11:50 00000002.history
Jul 15 12:08 000000030000000000000009
Jul 15 12:07 00000003.history
Jul 15 12:14 000000040000000000000006
Jul 15 12:13 00000004.history
Jul 15 12:16 000000050000000000000007
Jul 15 12:15 00000005.history
Jul 15 12:32 000000060000000000000008
Jul 15 12:34 000000060000000000000009
Jul 15 12:18 00000006.history
Jul 15 12:38 000000070000000000000008
Jul 15 12:38 00000007.history
Jul 15 12:40 000000080000000000000008
Jul 15 12:40 000000080000000000000009
Jul 15 12:39 00000008.history
Jul 15 12:43 000000090000000000000008
Jul 15 12:43 000000090000000000000009
Jul 15 12:41 00000009.history
Jul 15 12:44 0000000A.history


добавляю запись в таблицу
Код: css
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
$ psql
psql (11.5)
Type "help" for help.

posts=# select * from t;
 id | post
----+-------
  1 | 11:04
  2 | 11:16
  3 | 11:28
(3 rows)

posts=# insert into t values ('4', '12:48');
INSERT 0 1
posts=# select * from t;
 id | post
----+-------
  1 | 11:04
  2 | 11:16
  3 | 11:28
  4 | 12:48
(4 rows)



смотрю текущий лог:

Код: css
1.
2.
3.
4.
5.
posts=# SELECT pg_walfile_name(pg_current_wal_lsn());
     pg_walfile_name
--------------------------
 0000000A0000000000000008
(1 row)



сбрасываю его в архив:

Код: css
1.
2.
3.
4.
5.
posts=# SELECT pg_switch_wal();
 pg_switch_wal
---------------
 0/8000248
(1 row)



текущий сменился

Код: css
1.
2.
3.
4.
5.
posts=# SELECT pg_walfile_name(pg_current_wal_lsn());
     pg_walfile_name
--------------------------
 0000000A0000000000000009
(1 row)



восстанавливаю на последнюю запись

останавливаю постгрес

Код: css
1.
$ systemctl stop postgresql-11



удаляю всё из каталога с бд
Код: css
1.
$ rm -f -r *



разворачиваю базовый архив
Код: css
1.
$ tar -xzf /backup/file_backup/base.tar.gz -C .



Код: css
1.
2.
$ date
Wed Jul 15 12:54:26 +04 2020



создаю recovery
Код: css
1.
2.
$ echo "restore_command = 'cp /backup/logs/%f %p'" > recovery.conf
$ echo "recovery_target_time = '2020-07-15 12:50:00'" >> recovery.conf



стартую постгрес
Код: css
1.
$ systemctl start postgresql-11



записи №4 в бд нет

Код: css
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
postgres=# \c posts;
You are now connected to database "posts" as user "postgres".
posts=# select * from t;
 id | post
----+-------
  1 | 11:04
  2 | 11:16
  3 | 11:28
(3 rows)

posts=# SELECT pg_walfile_name(pg_current_wal_lsn());
     pg_walfile_name
--------------------------
 0000000B0000000000000008
(1 row)



pg_log/postgresql-Wed.log
< 2020-07-15 12:54:50.515 +04 >СООБЩЕНИЕ: работа системы БД была прервана; последний момент работы: 2020-07-15 11:22:12 +04
< 2020-07-15 12:54:50.584 +04 >СООБЩЕНИЕ: начинается восстановление точки во времени до 2020-07-15 12:50:00+04
< 2020-07-15 12:54:50.608 +04 >СООБЩЕНИЕ: файл журнала "000000010000000000000005" восстановлен из архива
< 2020-07-15 12:54:50.638 +04 >СООБЩЕНИЕ: запись REDO начинается со смещения 0/5000028
< 2020-07-15 12:54:50.640 +04 >СООБЩЕНИЕ: согласованное состояние восстановления достигнуто по смещению 0/5000130
< 2020-07-15 12:54:50.640 +04 >СООБЩЕНИЕ: система БД готова к подключениям в режиме "только чтение"
< 2020-07-15 12:54:50.663 +04 >СООБЩЕНИЕ: файл журнала "000000010000000000000006" восстановлен из архива
< 2020-07-15 12:54:50.711 +04 >СООБЩЕНИЕ: файл журнала "000000010000000000000007" восстановлен из архива
cp: не удалось выполнить stat для «/backup/logs/000000010000000000000008»: Нет такого файла или каталога
< 2020-07-15 12:54:50.740 +04 >СООБЩЕНИЕ: записи REDO обработаны до смещения 0/7000140
< 2020-07-15 12:54:50.741 +04 >СООБЩЕНИЕ: последняя завершённая транзакция была выполнена в 2020-07-15 11:28:22.52175+04
< 2020-07-15 12:54:50.767 +04 >СООБЩЕНИЕ: файл журнала "000000010000000000000007" восстановлен из архива
< 2020-07-15 12:54:50.802 +04 >СООБЩЕНИЕ: файл журнала "00000002.history" восстановлен из архива
< 2020-07-15 12:54:50.812 +04 >СООБЩЕНИЕ: файл журнала "00000003.history" восстановлен из архива
< 2020-07-15 12:54:50.817 +04 >СООБЩЕНИЕ: файл журнала "00000004.history" восстановлен из архива
< 2020-07-15 12:54:50.821 +04 >СООБЩЕНИЕ: файл журнала "00000005.history" восстановлен из архива
< 2020-07-15 12:54:50.825 +04 >СООБЩЕНИЕ: файл журнала "00000006.history" восстановлен из архива
< 2020-07-15 12:54:50.830 +04 >СООБЩЕНИЕ: файл журнала "00000007.history" восстановлен из архива
< 2020-07-15 12:54:50.835 +04 >СООБЩЕНИЕ: файл журнала "00000008.history" восстановлен из архива
< 2020-07-15 12:54:50.839 +04 >СООБЩЕНИЕ: файл журнала "00000009.history" восстановлен из архива
< 2020-07-15 12:54:50.852 +04 >СООБЩЕНИЕ: файл журнала "0000000A.history" восстановлен из архива
cp: не удалось выполнить stat для «/backup/logs/0000000B.history»: Нет такого файла или каталога
< 2020-07-15 12:54:50.857 +04 >СООБЩЕНИЕ: выбранный ID новой линии времени: 11
< 2020-07-15 12:54:50.913 +04 >СООБЩЕНИЕ: восстановление архива завершено
cp: не удалось выполнить stat для «/backup/logs/00000001.history»: Нет такого файла или каталога
< 2020-07-15 12:54:51.027 +04 >СООБЩЕНИЕ: система БД готова принимать подключения



$ ll /backup/logs/
total 294956
Jul 15 11:19 000000010000000000000003
Jul 15 11:22 000000010000000000000004
Jul 15 11:22 000000010000000000000005
Jul 15 11:22 000000010000000000000005.00000028.backup
Jul 15 11:28 000000010000000000000006
Jul 15 11:49 000000010000000000000007
Jul 15 12:01 000000020000000000000008
Jul 15 11:50 00000002.history
Jul 15 12:08 000000030000000000000009
Jul 15 12:07 00000003.history
Jul 15 12:14 000000040000000000000006
Jul 15 12:13 00000004.history
Jul 15 12:16 000000050000000000000007
Jul 15 12:15 00000005.history
Jul 15 12:32 000000060000000000000008
Jul 15 12:34 000000060000000000000009
Jul 15 12:18 00000006.history
Jul 15 12:38 000000070000000000000008
Jul 15 12:38 00000007.history
Jul 15 12:40 000000080000000000000008
Jul 15 12:40 000000080000000000000009
Jul 15 12:39 00000008.history
Jul 15 12:43 000000090000000000000008
Jul 15 12:43 000000090000000000000009
Jul 15 12:41 00000009.history
Jul 15 12:49 0000000A0000000000000008
Jul 15 12:50 0000000A0000000000000009
Jul 15 12:44 0000000A.history
Jul 15 12:54 0000000B.history
...
Рейтинг: 0 / 0
15.07.2020, 12:29
    #39979853
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
parallax113
< 2020-07-15 12:54:50.663 +04 >СООБЩЕНИЕ: файл журнала "000000010000000000000006" восстановлен из архива
< 2020-07-15 12:54:50.711 +04 >СООБЩЕНИЕ: файл журнала "000000010000000000000007" восстановлен из архива
cp: не удалось выполнить stat для «/backup/logs/000000010000000000000008»: Нет такого файла или каталога

Внимание на запрошенный timeline. И как по листингу /backup/logs/ видно - всё верно, в этом тайлайне нет такого сегмента.
См. recovery_target_timeline
...
Рейтинг: 0 / 0
15.07.2020, 13:32
    #39979907
parallax113
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
Melkij

Внимание на запрошенный timeline. И как по листингу /backup/logs/ видно - всё верно, в этом тайлайне нет такого сегмента.
См. recovery_target_timeline

а как тогда его восстановить?
если на момент записи был сегмент 0000000A0000000000000008, который попал в архив после смены pg_switch_wal()
почему идёт обращение к 000000010000000000000008 которого нет
...
Рейтинг: 0 / 0
15.07.2020, 13:42
    #39979914
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
восстановление из логов
parallax113,

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


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