powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / standby_mode=on в recovery.conf - какой в нём смысл?
8 сообщений из 8, страница 1 из 1
standby_mode=on в recovery.conf - какой в нём смысл?
    #38806990
enchanter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые!

Возможно, что-то не понимаю, прошу объяснить.

Задача - сделать непрерывное архивирование в системе мастер-слейв.
Мастер: postgresql 9.3 / Ubuntu 14.04
Слейв: postgresql 9.1 / Ubuntu 14.04 (9.1 установлена принудительно)

Использую инструкцию на офсайте.
После переноса файловой системы кластера и wal-архива на слейв создаю файл recovery.conf с таким содержимым:

Код: powershell
1.
2.
standby_mode = 'on'
restore_command = 'cp /var/lib/postgresql/9.1/wals/%f %p'



Запускаю сервер, в логах вижу:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
2014-11-15 12:07:56 YEKT ОТМЕТКА:  переход в режим резервного сервера
2014-11-15 12:07:56 YEKT ОТМЕТКА:  файл журнала "00000001000000000000009F" восстановлен из архива
2014-11-15 12:07:56 YEKT ОТМЕТКА:  запись REDO начинается со смещения 0/9FD50FCC
2014-11-15 12:07:56 YEKT ОТМЕТКА:  неполный стартовый пакет
2014-11-15 12:07:56 YEKT ОТМЕТКА:  согласованное состояние восстановления достигнуто по смещению 0/9FFFFFF0
cp: cannot stat ‘/var/lib/postgresql/9.1/wals/0000000100000000000000A0’: No such file or directory
cp: cannot stat ‘/var/lib/postgresql/9.1/wals/0000000100000000000000A0’: No such file or directory
2014-11-15 12:07:56 YEKT ВАЖНО:  система баз данных запускается
2014-11-15 12:07:57 YEKT ВАЖНО:  система баз данных запускается
2014-11-15 12:07:57 YEKT ВАЖНО:  система баз данных запускается
2014-11-15 12:07:58 YEKT ВАЖНО:  система баз данных запускается
2014-11-15 12:07:58 YEKT ВАЖНО:  система баз данных запускается
2014-11-15 12:07:59 YEKT ВАЖНО:  система баз данных запускается
2014-11-15 12:07:59 YEKT ВАЖНО:  система баз данных запускается
2014-11-15 12:08:00 YEKT ВАЖНО:  система баз данных запускается
2014-11-15 12:08:00 YEKT ВАЖНО:  система баз данных запускается
cp: cannot stat ‘/var/lib/postgresql/9.1/wals/0000000100000000000000A0’: No such file or directory
2014-11-15 12:08:01 YEKT ВАЖНО:  система баз данных запускается
2014-11-15 12:08:01 YEKT ВАЖНО:  система баз данных запускается


Подливаю в /var/lib/postgresql/9.1/wals готовые логи с мастера, в процессе логах вижу что-то типа:
Код: powershell
1.
2.
3.
4.
5.
6.
cp: cannot stat ‘/var/lib/postgresql/9.1/wals/00000001000000000000009E’: No such file or directory
cp: cannot stat ‘/var/lib/postgresql/9.1/wals/00000001000000000000009E’: No such file or directory
2014-11-15 11:59:56 YEKT ОТМЕТКА:  файл журнала "00000001000000000000009E" восстановлен из архива
cp: cannot stat ‘/var/lib/postgresql/9.1/wals/00000001000000000000009F’: No such file or directory
2014-11-15 12:00:01 YEKT ОТМЕТКА:  файл журнала "00000001000000000000009F" восстановлен из архива
cp: cannot stat ‘/var/lib/postgresql/9.1/wals/0000000100000000000000A0’: No such file or directory



Не понимаю один момент: почему восстановленные из архива файлы журнала не переносятся в pg_xlog физически? Что в таком случае означает "файл журнала "00000001000000000000009E" восстановлен из архива"? Куда он восстановлен? Ведь если я
теперь моделирую ституацию, когда мастер умер, и нужно восстановить слейв, происходит следующее:

Удаляю recovery.conf из каталога кластера. Рестарт сервера, вижу вывод:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 * Restarting PostgreSQL 9.1 database server
* The PostgreSQL server failed to start. Please check the log output:
2014-11-15 12:05:58 YEKT ОТМЕТКА:  система БД была выключена в процесса восстановления: 2014-11-15 12:05:56 YEKT
2014-11-15 12:05:58 YEKT ОТМЕТКА:  не удалось открыть файл "pg_xlog/00000001000000000000009F" (файл журнала: 0, сегмент: 159): No such file or directory
2014-11-15 12:05:58 YEKT ОТМЕТКА:  неверная запись первичной контрольной точки
2014-11-15 12:05:58 YEKT ОТМЕТКА:  не удалось открыть файл "pg_xlog/00000001000000000000009D" (файл журнала: 0, сегмент: 157): No such file or directory
2014-11-15 12:05:58 YEKT ОТМЕТКА:  неверная запись вторичной контрольной точки
2014-11-15 12:05:58 YEKT ПАНИКА:  не удалось считать правильную запись контрольной точки
2014-11-15 12:05:58 YEKT ОТМЕТКА:  неполный стартовый пакет
2014-11-15 12:05:58 YEKT ОТМЕТКА:  стартовый процесс (PID 4904) был завершён по сигналу 6: Aborted
2014-11-15 12:05:58 YEKT ОТМЕТКА:  прерывание запуска из-за ошибки в стартовом процессе



Это понятно, файлы ведь не скопированы. Тогда опять создаю recovery.conf с таким содержимым:
Код: powershell
1.
restore_command = 'cp /var/lib/postgresql/9.1/wals/%f %p'


Рестартую сервер. Файл автоматом переименовывется в recovery.done, в pg_xlog появляются файлы журнала (с другими, правда, именами, чем их исходники в /var/lib/postgresql/9.1/wals), и сервер благополучно запускается.

Сервер в режиме standby_mode соединения не принимает, и поэтому для того, чтобы восстановить его как мастер, нужно из recovery.conf удалить standby_mode = 'on' и рестартануть сервер. В зависимости от количества логов уйдёт какое-то количество времени, возможно, много времени, т.е. сервер не сразу станет доступен.

Зачем тогда нужен режим standby_mode = 'on'?
Или я что-то не понимаю или делаю не так?
...
Рейтинг: 0 / 0
standby_mode=on в recovery.conf - какой в нём смысл?
    #38807012
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enchanter,

http://www.postgresql.org/docs/9.3/static/standby-settings.html

parameter is on,

the server will not stop recovery

when the end of archived WAL is reached, but will keep trying to continue recovery by fetching new WAL segments using restore_command and/or by connecting to the primary server as specified by the primary_conninfo setting


parameter is on -->> server will not stop recovery

далее по документации, там это всё оч подробно
...
Рейтинг: 0 / 0
standby_mode=on в recovery.conf - какой в нём смысл?
    #38807043
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
enchanterЗадача - сделать непрерывное архивирование в системе мастер-слейв.
Мастер: postgresql 9.3 / Ubuntu 14.04
Слейв: postgresql 9.1 / Ubuntu 14.04 (9.1 установлена принудительно)

Использую инструкцию на офсайте.
...
Или я что-то не понимаю или делаю не так?

Еще раз внимательно прочитайте инструкции на официальном сайте .

Особенно вот этот момент:
авторIn general, log shipping between servers running different major PostgreSQL release levels is not possible.
...
Рейтинг: 0 / 0
standby_mode=on в recovery.conf - какой в нём смысл?
    #38807185
enchanter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые Misha Tyurin и /\/\/\/\/\/\!

Спасибо вам за готовность дать ответ, но для этого нужно как минимум внимательно прочитать вопрос. Я ведь не о том спрашиваю, что означает standby_mode = 'on'. И заметку
Код: powershell
1.
"In general, log shipping between servers running different major PostgreSQL release levels is not possible"


я тоже читал, она в данном случае не актуальна: 9.1 и 9.3 - одна мажорная версия.
И да, сразу уточню, чтобы не было вопросов: на обоих серверах ось 32-разрядная.
Возможно, в моём вопросе "многабукаф", поэтому изложу ещё раз покороче:

Что означает запись в логах в режиме standby_mode "файл журнала "00000001000000000000009E" восстановлен из архива"? Куда он восстановлен , ведь он не копируется в pg_xlog? Почему после выхода из режима восстановления сервер не запускается , указывая на отсутствие этого файла, и приходится опять входить в режим восстановления, но с параметром standby_mode = off, чтобы лог скопировался в pg_xlog?
...
Рейтинг: 0 / 0
standby_mode=on в recovery.conf - какой в нём смысл?
    #38807195
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enchanter,

9.1 и 9.3 это разные мажорные версии.
...
Рейтинг: 0 / 0
standby_mode=on в recovery.conf - какой в нём смысл?
    #38807366
enchanter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexius,
изучайте матчасть: http://semver.org/lang/ru/
...
Рейтинг: 0 / 0
standby_mode=on в recovery.conf - какой в нём смысл?
    #38807406
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enchanter,

Стоит посмотреть на политику PostgreSQL, а не кидаться ссылками на общие схемы версионирования.

У проекта PostgreSQL мажорной версией являются первые 2 цифры, о чем явно пишут на сайте :

Versioning policyPostgreSQL major releases include new features and occur roughly once every year. A major release is numbered by increasing either the first or second part of the version number , e.g. 9.1 to 9.2.

Major releases usually change the internal format of system tables and data files. These changes are often complex, so we do not maintain backward compatibility of all stored data. A dump/reload of the database or use of the pg_upgrade module is required for major upgrades.
...
Рейтинг: 0 / 0
standby_mode=on в recovery.conf - какой в нём смысл?
    #38807619
enchanter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vyegorov,

Да, по ходу был неправ, приношу извинения, не знал, что у Postgres другое версионирование.
Это тем не менее не мешает работе схемы. Загрузка логов из 9.3 в 9.1 работает, запросы к резервной БД выполняются, и видно, что резервная БД актуализируется.
В общем, разобрался сам. wal-файлы из архивного каталога не переносятся в pg_xlog, пока идёт восстановление в режиме standby_mode = 'on'. Когда сервер выходит из режима standby, нужные файлы логов копируются в pg_xlog, и сервер начинает работать в обычном r/w режиме.

Всем спасибо!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / standby_mode=on в recovery.conf - какой в нём смысл?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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