PostgreSQL Точка времени восстановления не работает
У нас есть 2 сервера PostgreSQL, настроенных как ведущий-ведомый.
Я хочу проверить ниже сценарий
Я взял базовое резервное копирование на мастер, а затем удалил таблицу и переключил файл xlog с помощью команды select pg_switch_xlog();
, Затем я остановил мастера. Повышенный раб как главный и удалил еще одну таблицу и переключил файл журнала.
Теперь я восстановил эту базовую резервную копию и файлы wal обоих серверов на новом сервере и использовал recovery_target_time для тестирования PITR. Я могу восстановить время, когда я не удалил ни одной таблицы или удалил 1 таблицу из старого мастера. Но я не могу восстановить момент, когда я удалил таблицу из нового мастера.
Ниже выводится лог для того же
2018-08-06 14:49:39.564 UTC [19772] LOG: starting point-in-time recovery to 2018-08-06 14:20:00+00
cp: cannot stat ‘/var/lib/pgsql/pg_log_archive/00000005.history’: No such file or directory
2018-08-06 14:49:39.579 UTC [19772] LOG: restored log file "000000050000000200000046" from archive
2018-08-06 14:49:39.630 UTC [19772] LOG: redo starts at 2/46000028
2018-08-06 14:49:39.635 UTC [19772] LOG: consistent recovery state reached at 2/460ABCE8
2018-08-06 14:49:39.636 UTC [19770] LOG: database system is ready to accept read only connections
2018-08-06 14:49:39.648 UTC [19772] LOG: restored log file "000000050000000200000047" from archive
2018-08-06 14:49:39.732 UTC [19772] LOG: restored log file "000000050000000200000048" from archive
cp: cannot stat ‘/var/lib/pgsql/pg_log_archive/000000050000000200000049’: No such file or directory
2018-08-06 14:49:39.780 UTC [19772] LOG: redo done at 2/48003410
2018-08-06 14:49:39.780 UTC [19772] LOG: last completed transaction was at log time 2018-08-06 13:27:00.442816+00
2018-08-06 14:49:39.796 UTC [19772] LOG: restored log file "000000050000000200000048" from archive
2018-08-06 14:49:39.843 UTC [19772] LOG: restored log file "00000006.history" from archive
cp: cannot stat ‘/var/lib/pgsql/pg_log_archive/00000007.history’: No such file or directory
2018-08-06 14:49:39.845 UTC [19772] LOG: selected new timeline ID: 7
cp: cannot stat ‘/var/lib/pgsql/pg_log_archive/00000005.history’: No such file or directory
2018-08-06 14:49:39.903 UTC [19772] LOG: archive recovery complete
2018-08-06 14:49:40.006 UTC [19772] LOG: MultiXact member wraparound protections are now enabled
2018-08-06 14:49:40.008 UTC [19770] LOG: database system is ready to accept connections
2018-08-06 14:49:40.009 UTC [19786] LOG: autovacuum launcher started
Ниже приводится содержание recovery.conf
файл:
restore_command = 'cp /var/lib/pgsql/pg_log_archive/%f %p'
recovery_target_time = '2018-08-06 14:20:00.0'
recovery_target_inclusive = 'true'
recovery_target_action = 'promote'
Что я здесь не так делаю?
1 ответ
Восстановление не продолжается до временной шкалы 6, потому что вы не добавили
recovery_target_timeline = 'latest'
в recovery.conf
, Как сказано в документации:
По умолчанию выполняется восстановление на той же временной шкале, которая была текущей, когда была сделана базовая резервная копия.