Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Непрерывное архивирование и восстановление на момент времени  [new]
vital8111
Member

Откуда:
Сообщений: 11
Добрый день.
Postgresql 9.6
Настраиваю непрерывный архив.
При восстановлении на какой то момент времени(подсунув соответственно базовый бекап, архив, команду восстановления) система запускается не с 1 раза.
По логам видно что копирует файлы журнала предзаписи из архива и вылетает с "вежливым выключением".
При повторном запуске начинает копировать файлы журнала с того места где вылетело в прошлый раз.
И так запускаем службу несколько раз(до 6 раз доходило). В итоге достигается согласованное состояние на какой-то момент. Запускаем службу еще раз и только тогда система БД стартует. Никаких действий между запусками службы не проводилось. Только запуск.

Подскажите пожалуйста это нормальное поведение? Или должно все восстанавливаться при первом запуске? Хотелось бы, конечно, при первом запуске. Если это возможно подскажите, плз, куда копать, чтобы пофиксить.

Повысить версию БД нет никакой возможности. ОС Astra Linux 1.6 SE

Заранее благодарен.
9 фев 21, 12:32    [22278001]     Ответить | Цитировать Сообщить модератору
 Re: Непрерывное архивирование и восстановление на момент времени  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1246
Ищите того, кто отправляет сигнал выключения. Возможно где-то выставили таймаут ожидания запуска. Например, в systemd дефолтый выставлен.
9 фев 21, 12:50    [22278015]     Ответить | Цитировать Сообщить модератору
 Re: Непрерывное архивирование и восстановление на момент времени  [new]
vital8111
Member

Откуда:
Сообщений: 11
В логах не найти кто послал сигнал?
9 фев 21, 13:02    [22278031]     Ответить | Цитировать Сообщить модератору
 Re: Непрерывное архивирование и восстановление на момент времени  [new]
vital8111
Member

Откуда:
Сообщений: 11
Поискал в сторону systemd. Не оно.
Дефолтный таймаут 90 сек. Увеличил до 900 сек.
Система "вежливо выключается" через 6-7 сек.
9 фев 21, 13:25    [22278058]     Ответить | Цитировать Сообщить модератору
 Re: Непрерывное архивирование и восстановление на момент времени  [new]
Guzya
Member

Откуда:
Сообщений: 700
Покажите что в recovery.conf.
9 фев 21, 13:31    [22278065]     Ответить | Цитировать Сообщить модератору
 Re: Непрерывное архивирование и восстановление на момент времени  [new]
vital8111
Member

Откуда:
Сообщений: 11
там только команда разархивирования и время на которое нужно восстановить
остальное то что в sample. Закомментировано все.
т.е. у меня
restore_command = 'cp /var/lib/postgresql/archive/%f %p'
и
recovery_target_time = '2021-02-09 10:00 MSK'
больше ничего нет(закомментировано)
9 фев 21, 14:08    [22278111]     Ответить | Цитировать Сообщить модератору
 Re: Непрерывное архивирование и восстановление на момент времени  [new]
Guzya
Member

Откуда:
Сообщений: 700
проставьте

recovery_target_action = promote
9 фев 21, 14:37    [22278154]     Ответить | Цитировать Сообщить модератору
 Re: Непрерывное архивирование и восстановление на момент времени  [new]
vital8111
Member

Откуда:
Сообщений: 11
не помогло.
в syslog появляется запись
не удалось привязаться к сокету IPv6: Невозможно назначить запрошенный адрес
Возможно порт 5432 занят другим процессом postmaster? Если нет, повторите попытку через несколько секунд.
postgresql@9.6-main.service: Control process exited, code=exited status=1
Failed to start PostgreSQL Cluster 9.6-main.
postgresql@9.6-main.service: Unit entered failed state.
postgresql@9.6-main.service: Failed with result 'exit-code'.


Но опять же странно
Через несколько запусков нет этой ошибки в логах и сервер спокойно стартует

Сообщение было отредактировано: 9 фев 21, 15:01
9 фев 21, 15:00    [22278178]     Ответить | Цитировать Сообщить модератору
 Re: Непрерывное архивирование и восстановление на момент времени  [new]
vital8111
Member

Откуда:
Сообщений: 11
Убрал ipv6 ошибка пропала
Но все равно

systemd[1]: Starting PostgreSQL Cluster 9.6-main...
postgresql@9.6-main[2561]: The PostgreSQL server failed to start. Please check the log output:
postgresql@9.6-main[2561]: 2021-02-09 15:13:09.667 MSK [2566] СООБЩЕНИЕ:  передача вывода в протокол процессу сбора протоколов
postgresql@9.6-main[2561]: 2021-02-09 15:13:09.667 MSK [2566] ПОДСКАЗКА:  В дальнейшем протоколы будут выводиться в каталог "pg_log".
systemd[1]: postgresql@9.6-main.service: Control process exited, code=exited status=1
systemd[1]: Failed to start PostgreSQL Cluster 9.6-main.
systemd[1]: postgresql@9.6-main.service: Unit entered failed state.
systemd[1]: postgresql@9.6-main.service: Failed with result 'exit-code'.


Где ошибку то искать?
Больше в логах нет ничего

Сообщение было отредактировано: 9 фев 21, 15:11
9 фев 21, 15:14    [22278195]     Ответить | Цитировать Сообщить модератору
 Re: Непрерывное архивирование и восстановление на момент времени  [new]
Guzya
Member

Откуда:
Сообщений: 700
Вы случаем не на том же сервере где мастер стартуете?
Логи смотрите в ../pg_log/

Сообщение было отредактировано: 9 фев 21, 15:21
9 фев 21, 15:26    [22278205]     Ответить | Цитировать Сообщить модератору
 Re: Непрерывное архивирование и восстановление на момент времени  [new]
vital8111
Member

Откуда:
Сообщений: 11
Нет. Новая виртуалка. Путь нового архива в auto.conf изменен.
Но конфиги серверов идентичные. Оба виртуальные. Но по идее какая разница даже если на старом. Я же удаляю все из папки кластера. Потом закидываю туда base backup
Сервис естественно останавливаю перед восстановлением через service postgresql stop.

в pg_log нет ничего. Восстанавливает журнал, а потом получен запрос на вежливое выключение.

Сообщение было отредактировано: 9 фев 21, 15:34
9 фев 21, 15:40    [22278212]     Ответить | Цитировать Сообщить модератору
 Re: Непрерывное архивирование и восстановление на момент времени  [new]
vital8111
Member

Откуда:
Сообщений: 11
Нашел решение на форуме Astra Linux.
Не знаю уж это именно в Astra он себя так ведет или всегда так...

Нужно изменить файл /etc/postgresql/9.6/main/pg_ctl.conf, добавив следующие значения:

pg_ctl_options = '-w -t 1800'

где 1800 - это количество секунд, через которое команда запуска кластера Постгрес вернет systemd информацию о текущем состоянии кластера Постгрес (если конечно запуск не завершится до этого момента).

То есть работает это так:
1. systemd пинает команду
ExecStart=@/usr/bin/pg_ctlcluster postgresql@%i --skip-systemctl-redirect %i start
2. Та по умолчанию через очень короткое время (4-6 секунд) возвращает systemd фразу "знаешь, сейчас кластер сообщает что он восстанавливается".
3. systemd почему-то реагирует на это "ах так, ну тогда SIGTERM тебе".
4. Посгтрес сообщает о вежливом выключении и отменяет процесс восстановления
9 фев 21, 16:24    [22278251]     Ответить | Цитировать Сообщить модератору
 Re: Непрерывное архивирование и восстановление на момент времени  [new]
big-trot
Member

Откуда: Тверь
Сообщений: 288
Похоже эта проблема не связан с ОС Astra Linux SE.
11 фев 21, 17:55    [22279639]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить