Postgresql pg_standby занимает целую вечность, чтобы выполнить аварийное переключение - PullRequest
2 голосов
/ 11 августа 2010

У меня есть рабочая установка доставки WAL с подчиненным сервером «горячего» резервирования, применяющим файлы WAL.

Когда я создаю файл триггера pg_standby, он обнаруживает это сразу, но для этого требуется около 10-15 минут.на самом деле быть готовым к принятию соединений.Большую часть времени тратится на ожидание файлов .history.

Файл триггера пуст, поэтому следует выполнить «умное» аварийное переключение.Могу ли я сделать что-то, чтобы сделать аварийное переключение (намного) быстрее?

Вывод журнала:

WAL file not present yet. Checking for trigger file...
trigger file found: smart failover
LOG:  could not open file "pg_xlog/000000010000000000000089" (log file 0, segment 137): No such file or directory
LOG:  redo done at 0/88003428
LOG:  last completed transaction was at log time 2010-08-10 13:26:20.232799+00
Trigger file        : /psql_archive/role.master
Waiting for WAL file    : 000000010000000000000088
WAL file path       : /psql_archive/000000010000000000000088
Restoring to        : pg_xlog/RECOVERYXLOG
Sleep interval      : 60 seconds
Max wait interval   : 0 forever
Command for restore : cp "/psql_archive/000000010000000000000088" "pg_xlog/RECOVERYXLOG"
Keep archive history    : 000000000000000000000000 and later
trigger file found: smart failover
running restore     : OK

LOG:  restored log file "000000010000000000000088" from archive
Trigger file        : /psql_archive/role.master
Waiting for WAL file    : 00000002.history
WAL file path       : /psql_archive/00000002.history
Restoring to        : pg_xlog/RECOVERYHISTORY
Sleep interval      : 60 seconds
Max wait interval   : 0 forever
Command for restore : cp "/psql_archive/00000002.history" "pg_xlog/RECOVERYHISTORY"
Keep archive history    : 000000000000000000000000 and later
running restore     :cp: cannot stat `/psql_archive/00000002.history': No such file or directory
cp: cannot stat `/psql_archive/00000002.history': No such file or directory
cp: cannot stat `/psql_archive/00000002.history': No such file or directory
cp: cannot stat `/psql_archive/00000002.history': No such file or directory
not restored
history file not found
LOG:  selected new timeline ID: 2
Trigger file        : /psql_archive/role.master
Waiting for WAL file    : 00000001.history
WAL file path       : /psql_archive/00000001.history
Restoring to        : pg_xlog/RECOVERYHISTORY
Sleep interval      : 60 seconds
Max wait interval   : 0 forever
Command for restore : cp "/psql_archive/00000001.history" "pg_xlog/RECOVERYHISTORY"
Keep archive history    : 000000000000000000000000 and later
running restore     :cp: cannot stat `/psql_archive/00000001.history': No such file or directory
cp: cannot stat `/psql_archive/00000001.history': No such file or directory
cp: cannot stat `/psql_archive/00000001.history': No such file or directory
cp: cannot stat `/psql_archive/00000001.history': No such file or directory
not restored
history file not found
LOG:  archive recovery complete
LOG:  autovacuum launcher started
LOG:  database system is ready to accept connections

Спасибо.

-dennis

Ответы [ 2 ]

1 голос
/ 11 августа 2010

Короче говоря, если вы не используете быстрое аварийное переключение, pg_standby продолжит обрабатывать все оставленные журналы (как и должно), чтобы минимизировать потерю данных.

Чтобы сделать вашу жизнь проще, я бы посмотрел на PITRTools.

0 голосов
/ 11 августа 2010

В соответствии с документацией: http://www.postgresql.org/docs/current/static/pgstandby.html

Быстрое восстановление после отказа: при быстром отказоустойчивости сервер немедленно запускается.Все файлы WAL в архиве, которые еще не были применены, будут игнорироваться, и все транзакции в этих файлах будут потеряны.Чтобы вызвать быстрое переключение при сбое, создайте файл триггера и запишите в него слово быстро.pg_standby также может быть настроен на автоматическое быстрое переключение при сбое, если новый файл WAL не появляется в течение определенного интервала.

Или посмотрите «Таблицу F-23. Опции pg_standby», где описано максимальное время ожидания.*

Ура

...