воскресенье, 27 октября 2019 г.

Восстановления из полной автономной резервной копии c непрерывным архивированием (замена кластера на резервную копию)

$ sudo -u postgres psql -c "\l+"


Установить базу с тестовой конфигурацией ЗИК ГУ

$ sudo su postgres -c "createdb --username postgres -T template0 demo"

$ time sudo su postgres -c "pg_restore -d demo -j 4 /home/user/zgutest.dump"

Делаем полную копию:
$ sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired -j4

Проверить архивирование:
$ sudo -u postgres  psql -c " select * from pg_stat_archiver;"

Подключиться к базе и войти в 1с создать документ, провести, выйти из 1с.

 
Скопировать postgresql.conf

$ sudo -u postgres cp /etc/postgresql/9.6/main/postgresql.conf /backup/postgresql.conf

Скопировать pg_hba.conf

$ sudo -u postgres cp /etc/postgresql/9.6/main/pg_hba.conf /backup/pg_hba.conf
 

Просмотр:

$ sudo -u postgres pg_probackup-9.6 show -B /backup

ID Q010SV


Проверка backup:
$ sudo -u postgres pg_probackup-9.6 validate -B /backup

INFO: Validate backups of the instance 'main'
INFO: Validating backup Q010SV
INFO: Backup Q010SV data files are valid
INFO: Backup Q010SV WAL segments are valid

Дополнительно можно проверить

$ sudo -u postgres pg_probackup-9.6 validate -B /backup   --instance main -i Q010SV --time='2042-04-16 12:26:00'







WARNING: Recovery can be done up to time 2019-10-27 12:35:49+03, xid 34293 and LSN 1/5AFFD5E0

Останавливаем 1с
$ sudo systemctl stop srv1cv83.service


Внимание мы удалим полностью существующий кластер с базами 1С !!!
Вместе с настройками в /etc/postgresql 
Еще раз сохраним:
$ sudo -u postgres cp /etc/postgresql/9.6/main/postgresql.conf /etc/postgresql/9.6/main/postgresql.conf.bak
$ sudo -u postgres cp /etc/postgresql/9.6/main/pg_hba.conf /etc/postgresql/9.6/main/pg_hba.conf.bak

$ sudo pg_dropcluster --stop 9.6 main
$ sudo pg_createcluster --locale ru_RU.UTF-8 9.6 main --  --data-checksums

Удалим данные кластера main
$ sudo /bin/su postgres -c "rm -rf /var/lib/postgresql/9.6/main/*"

Чтобы безопасно запустить восстановленный сервер, надо отключить непрерывное архивирование - иначе новые файлы WAL попадут в тот же каталог.

Восстановим кластер main
$ sudo -u postgres pg_probackup-9.6 restore -B /backup --instance main -i Q010SV --recovery-target='latest' -j 4


INFO: Validating backup Q010SV
INFO: Backup Q010SV data files are valid
INFO: Backup Q010SV WAL segments are valid
INFO: Backup Q010SV is valid.
INFO: Restore of backup Q010SV completed.

Обратить внимание - будет автоматически создан /var/lib/postgresql/9.6/main/recovery.conf

$ sudo -u postgres cat  /var/lib/postgresql/9.6/main/recovery.conf
# recovery.conf generated by pg_probackup 2.2.3
restore_command = '/usr/bin/pg_probackup-9.6 archive-get -B /backup --instance main --wal-file-path=%p --wal-file-name=%f'
recovery_target_action = 'pause'

Нужно стартануть кластер, хоть он и не запустится
$ sudo pg_ctlcluster 9.6 main start
#$ sudo sudo systemctl status postgresql@9.6-main.service 

Для восстановления запустить так:
$ sudo su postgres -c "/usr/lib/postgresql/9.6/bin/pg_ctl start  -w -D /var/lib/postgresql/9.6/main  -o '-c config_file=/etc/postgresql/9.6/main/postgresql.conf'"


....
....
Дождаться завершения восстановления!


Остановить:
$ sudo su postgres -c "/usr/lib/postgresql/9.6/bin/pg_ctl stop  -w -D /var/lib/postgresql/9.6/main  -o '-c config_file=/etc/postgresql/9.6/main/postgresql.conf'"


После этого будет работать штатный режим:
$ sudo pg_ctlcluster 9.6 main start

$ sudo sudo systemctl status postgresql@9.6-main.service


Важно: на данном этапе не настроен  /etc/postgresql/9.6/main/postgresql.conf !
Не будет настроено непрерывное архивирование!!!

Запускаем 1с пока просто для проверки!
$ sudo systemctl start srv1cv83.service


Входим в 1С проверяем что присутствуют все документы, введеные после
выполнения последней полной копии.

Проверить архивирование:
$ sudo -u postgres  psql -c " select * from pg_stat_archiver;"

Видим что архивирование не выполняется.

После проверки восстановления нужно включить непрерывное архивирование.



Для возобновления архивирования:

$ sudo systemctl stop srv1cv83.service

$ sudo pg_ctlcluster 9.6 main stop

$ sudo -u postgres cp /backup/postgresql.conf /etc/postgresql/9.6/main/postgresql.conf
$ sudo -u postgres cp /backup/pg_hba.conf  /etc/postgresql/9.6/main/pg_hba.conf 

или

$ sudo -u postgres cp /etc/postgresql/9.6/main/postgresql.conf.bak /etc/postgresql/9.6/main/postgresql.conf
$ sudo -u postgres cp /etc/postgresql/9.6/main/pg_hba.conf.bak /etc/postgresql/9.6/main/pg_hba.conf 

Проверим:

Должны быть настройки для pg_probackup и для 1с.

$ sudo -u postgres nano /etc/postgresql/9.6/main/postgresql.conf
$ sudo -u postgres nano /etc/postgresql/9.6/main/pg_hba.conf
$ sudo pg_ctlcluster 9.6 main start

$ sudo systemctl start srv1cv83.service


Делаем полную копию:
$ sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired -j4


Проверить архивирование:
$ sudo -u postgres  psql -c " select * from pg_stat_archiver;"

Комментариев нет:

Отправить комментарий