Мониторинг репликации Postgresql

Встроенная репликация в PostgreSQL 9 реализована благодаря журналу опережающей записи (WAL — Write-Ahead Log) с помощью пересылки XLOG-ов с главного сервера на подчиненный. При настроенной репликации на мастере и слейве запускаются дополнительные процессы: «postgres: wal sender process» и «postgres: wal receiver process», соответственно.
Судить о времени отставания slave-сервера от master-сервера можно сопоставляя текущие позиции записей журнала WAL: текущей на мастере и принятой/примененной на слейве. Их можно получить используя pg_current_xlog_location и pg_last_xlog_receive_location/pg_last_xlog_replay_location, соответственно.

Для работы скрипта необходимо будет установить bc

yum install bc

Пример скрипта:

#!/bin/sh
MHOST= 10.10.10.2
MUSER= 2851421504

master_hex=`psql  -h $MHOST -U $MUSER -c "SELECT pg_current_xlog_location()" postgres | grep '/' | awk -F "/" {'print $2'}`
master=`echo "ibase=16; $master_hex" | bc`
#echo $master
slave_hex=`psql -c "select pg_last_xlog_replay_location()" -U postgres | grep '/' | awk -F "/" {'print $2'}`
slave=`echo "ibase=16; $slave_hex" | bc`
#echo $slave
ms=`echo "${master}-${slave}" | bc`
#echo $ms
#ms=5000
if test ! -z "$ms" ; then
    if test $ms -gt '5000';then
        echo "Postgres replication check. Critical! Lag = $ms !" | mail -s "Postgres replication check. Critical!" sf@nagg.ru
        exit 2
    fi

    if test $ms -gt '500';then
        echo "Postgres replication check. Warning! Lag = $ms !" | mail -s "Postgres replication check. Warning!" sf@nagg.ru
        exit 1
    fi

    echo "Postgres replication check. Replication status is OK!" | mail sf@nagg.ru
    exit 0

else
    echo "Postgres replication check. Critical! Unexpected error — need check replication." | mail -s "Postgres replication check. Critical!" sf@nagg.ru
    exit 2
fi

На этом все, успехов!

Related posts:

  1. Мониторинг потерь пакетов на сервере с помощью mtr Потери пакетов – довольно частое явление, особенно у ненадежных хостингов,...
  2. Полезные команды PostgreSQL В наше время все чаще встречаются БД PostgreSQL, поэтому возможно...
  3. Устанавливаем БД postgresql для высоконагруженных вэб-серверов Стандартно мы используем http://www.postgresql.org/ версии 8.3.x. Базы данных хранятся в...
  4. Linux: защита скриптов от двойного запуска У всех в повседневной работе присутствуют скрипты, которые выполняются довольно...
  5. Решено: PHP Warning: finfo_open(): Failed to load magic database at Данная ошибка имеет место когда в конфигурации сервера (apache) указана...
You can leave a response, or trackback from your own site.

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

*