You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Интересует восстановление бэкапов на момент времени.
Исходные данные:
pg16 сервер бэкапов
pg15 сервер, на который восстанавливается бэкап
pg28 сервер, с которого создаются бэкапы
Удаленные сервера
Oracle Linux Server release 7.3, PostgreSQL 10.20
pg_probackup-10 2.5.5 (PostgreSQL 10.19)
Для проверки корректности восстановления на заданное время работает крон (pg28)
*/10 * * * * psql -c 'insert into timing(select now());select pg_switch_wal();'
Восстановление бэкапов проводилось после создания последнего бэкапа, плюс некоторое время (дельта) , чтобы отработал крон (вставилась строка в таблицу и переключился wal и этот wal оказался на сервере бэкапов)
Восстановление определенного бэкапа проверил, работает отлично.
pg_probackup-10 restore --instance=pg15 -D /opt/postgres/10 -i R9VCGC --remote-proto=ssh --remote-host=pg15.test.osmp.ru --archive-host=pg15 --log-level-console=log --log-level-file=verbose --log-filename=restore_pg15.log
А вот восстановление на определенный момент времени никак не получается.
а)
Если брать бэкап с WAL Mode = STREAM, то бэкап восстанавливается на момент времени создания бэкапа. Сужу по последнему примененному WAL и таблице , заполняющейся по крону.
К тому же нашел вот это #470, где говориться, что при таком виде (stream) восстановится на определенный момент времени не возможно
pg_probackup-10 restore --instance=pg28 -D /opt/postgres/10 -j 1 --recovery-target-time='2022-04-05 14:45:00' --progress --remote-proto=ssh --remote-host=pg15.test.osmp.ru --log-level-console=log --log-level-file=verbose --log-filename=restore_time.log
б)
Если брать бэкап с WAL Mode = ARCHIVE, то WAL не копируются на удаленный сервер и при поднятии кластера ошибка
2022-04-06 14:43:15 MSK [32603]: [1-1]: INFO: pg_probackup archive-push WAL file: 000000010000000200000073, threads: 1/1, batch: 1/1, compression: none
2022-04-06 14:43:15 MSK [32603]: [1-1]: ERROR: Cannot open source file "/opt/postgres/10/pg_wal/000000010000000200000073": No such file or directory
2022-04-06 14:43:15 MSK [32600]: [1-1] user=,db= 00000 LOG: archive command failed with exit code 1
исправляется легко копированием WAL на удаленный сервер c сервера бэкапов scp * pg15.test.osmp.ru:/$PGDATA/pg_wal. (PS при большом количестве wal журналов на сервере бэкапов это будет затруднительно сделать)
Вам надо укзаать откуда серверу, на который проихсодит восстановление, брать журналы
Для этого можно использовать параметры --archive-host, --archive-user и --archive-port
Т.е. схема такова, что журналы не "приезжают" вместе с восстановленной копией, а тянутся с сервера резервных копий "на лету" в процессе восстановления
Механизм когда журналы будут презжать вместе с копией обещались реализовать
Хотя, у нас используются копии не STREAM и ARCHIVE, но с указанными параметрами все восстанавливается как надо
Добрый день!
Интересует восстановление бэкапов на момент времени.
Исходные данные:
pg16 сервер бэкапов
pg15 сервер, на который восстанавливается бэкап
pg28 сервер, с которого создаются бэкапы
Удаленные сервера
Oracle Linux Server release 7.3, PostgreSQL 10.20
pg_probackup-10 2.5.5 (PostgreSQL 10.19)
Удаленный сервер postgresql.conf (pg28)
archive_mode = on
archive_command = '/usr/bin/pg_probackup-10 archive-push -B /u01/pg_probackup --instance=pg28 --wal-file-path=%p --wal-file-name=%f --remote-host=pg16.test --remote-user=postgres'
На сервере бэкапов имеем:
pg_probackup-10 2.5.5 (PostgreSQL 10.19)
[pg16:postgres]$ pg_probackup-10 show --instance pg28 -B /u01/pg_probackup
Бэкапы делались следующими командами:
pg_probackup-10 backup -B /u01/pg_probackup --instance pg28 -b FULL --stream -j2 --remote-host=pg28.test.osmp.ru --remote-user=postgres -U barman -d pgbackup
pg_probackup-10 backup -B /u01/pg_probackup --instance pg28 -b delta --stream -j2 --remote-host=pg28.test.osmp.ru --remote-user=postgres -U barman -d pgbackup
pg_probackup-10 backup -B /u01/pg_probackup --instance pg28 -b FULL --remote-host=pg28.test.osmp.ru --remote-user=postgres -U barman -d pgbackup
Для проверки корректности восстановления на заданное время работает крон (pg28)
*/10 * * * * psql -c 'insert into timing(select now());select pg_switch_wal();'
Восстановление бэкапов проводилось после создания последнего бэкапа, плюс некоторое время (дельта) , чтобы отработал крон (вставилась строка в таблицу и переключился wal и этот wal оказался на сервере бэкапов)
Восстановление определенного бэкапа проверил, работает отлично.
pg_probackup-10 restore --instance=pg15 -D /opt/postgres/10 -i R9VCGC --remote-proto=ssh --remote-host=pg15.test.osmp.ru --archive-host=pg15 --log-level-console=log --log-level-file=verbose --log-filename=restore_pg15.log
А вот восстановление на определенный момент времени никак не получается.
а)
Если брать бэкап с WAL Mode = STREAM, то бэкап восстанавливается на момент времени создания бэкапа. Сужу по последнему примененному WAL и таблице , заполняющейся по крону.
К тому же нашел вот это #470, где говориться, что при таком виде (stream) восстановится на определенный момент времени не возможно
pg_probackup-10 restore --instance=pg28 -D /opt/postgres/10 -j 1 --recovery-target-time='2022-04-05 14:45:00' --progress --remote-proto=ssh --remote-host=pg15.test.osmp.ru --log-level-console=log --log-level-file=verbose --log-filename=restore_time.log
б)
Если брать бэкап с WAL Mode = ARCHIVE, то WAL не копируются на удаленный сервер и при поднятии кластера ошибка
2022-04-06 14:43:15 MSK [32603]: [1-1]: INFO: pg_probackup archive-push WAL file: 000000010000000200000073, threads: 1/1, batch: 1/1, compression: none
2022-04-06 14:43:15 MSK [32603]: [1-1]: ERROR: Cannot open source file "/opt/postgres/10/pg_wal/000000010000000200000073": No such file or directory
2022-04-06 14:43:15 MSK [32600]: [1-1] user=,db= 00000 LOG: archive command failed with exit code 1
исправляется легко копированием WAL на удаленный сервер c сервера бэкапов scp * pg15.test.osmp.ru:/$PGDATA/pg_wal. (PS при большом количестве wal журналов на сервере бэкапов это будет затруднительно сделать)
Подскажите, что настроено/делается не так?
pg_probackup-10 show-config --instance pg28 -B /u01/pg_probackup | grep -v '#'
pgdata = /opt/postgres/10
system-identifier = 7020398115032853815
pgdatabase = backupdb
pghost = pg28.test.osmp.ru
pguser = barman
replica-timeout = 5min
archive-timeout = 5min
log-level-console = INFO
log-level-file = LOG
log-filename = backup_cron.log
log-directory = /u01/pg_probackup/backups/pg28
log-rotation-size = 0TB
log-rotation-age = 0d
retention-redundancy = 1
retention-window = 3
wal-depth = 1
compress-algorithm = none
compress-level = 1
remote-proto = ssh
remote-host = pg28.test.osmp.ru
remote-user = postgres
The text was updated successfully, but these errors were encountered: