Postgres HA - Отставание сервера в режиме "горячего" резервирования
Недавно мы внедрили высокую доступность для нашего сервера БД postgres (9.0.4) с помощью методов, описанных как Резервные серверы доставки журналов в документации Postgres. Кажется, все в порядке и работает, файлы WAL поставляются и загружаются резервным сервером, но у нас наблюдается отставание между ведущим и ведомым компьютерами. Задержка составляет около 2 часов, что не совсем приемлемо.
В чем может быть причина этого отставания? На машине не запущено ничего, кроме сервера postgres, хотя он использует более медленные жесткие диски по сравнению с рабочим сервером. Как я могу проверить, вызывает ли дисковый ввод-вывод проблемы?
Если я проверяю, какие процессы выполняются на сервере, я вижу постоянную битву между процессом запуска postgres, который восстанавливает новейшие файлы WAL, и утилитой pg_standby, которая шаг за шагом принимает заархивированные WAL-файлы. Это нормально, что процесс запуска работает постоянно?
PS пример:
postgres 1422 0.0 1.0 13061220 131568 ? S Sep20 0:01 /usr/pgsql-9.0/bin/postmaster -p 5433 -D /data/pgsql_5433/data
postgres 1431 0.0 0.0 176928 512 ? Ss Sep20 0:12 postgres: logger process
postgres 1432 70.5 72.0 13068604 8775544 ? Ss Sep20 5744:15 postgres: startup process waiting for 000000010000181F00000016
postgres 1437 0.2 70.4 13068336 8582736 ? Ss Sep20 22:50 postgres: writer process
postgres 32199 0.0 0.0 4064 484 ? S 01:46 0:00 /usr/pgsql-9.0/bin/pg_standby -l -t/data/pgsql_5433/trigger /data/pgsql_5433/psql_wal_import 000000010000181F00000016 pg_xlog/RECOVERYXLOG 000000010000181E00000051
Буду признателен за любую подсказку...
1 ответ
Скорее всего, заполнение вашего WAL занимает много времени. Вы можете настроить время ожидания, чтобы оно переключалось до того, как оно заполнится. Это значительно увеличит сетевой трафик, но даст вам максимальное время до отправки журнала. Вы можете проверить документацию здесь.