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

Откуда:
Сообщений: 71
Добрый день.
Есть мастер, есть слейв, между ними настроена репликация. Можно как-то по данным из pg_stat_replications определить на сколько слейв отстает от мастера по времени?
Можно ли по номера транзакций из pg_stat_replications узнать время, когда они были зафиксированы на мастере?
14 ноя 17, 10:57    [20951739]     Ответить | Цитировать Сообщить модератору
 Re: Как определить отставание слейва от мастера при репликации  [new]
queezy relax
Member

Откуда:
Сообщений: 68


К сообщению приложен файл. Размер - 119Kb
14 ноя 17, 11:16    [20951804]     Ответить | Цитировать Сообщить модератору
 Re: Как определить отставание слейва от мастера при репликации  [new]
pmb17
Member

Откуда:
Сообщений: 71
Спасибо, не заметил )

У меня на слейве pg_last_xact_replay_timestamp() ничего не выводит:
postgres=# select pg_last_xact_replay_timestamp();
 pg_last_xact_replay_timestamp 


при этом судя по выводу ps процесс восстановления WAL файлов идет.

postgres 28936 28934  0 11:45 ?        00:00:06 postgres: 9.6/slave: startup process   recovering 000000010000004100000094
postgres 28941 28934  0 11:45 ?        00:00:00 postgres: 9.6/slave: checkpointer process   
postgres 28942 28934  0 11:45 ?        00:00:00 postgres: 9.6/slave: writer process   
postgres 28990 28934  0 11:45 ?        00:00:00 postgres: 9.6/slave: stats collector process   
postgres 28991 28934  0 11:45 ?        00:00:08 postgres: 9.6/slave: wal receiver process   streaming 41/94260000
root     30856 26842  0 12:10 pts/5    00:00:00 grep slave
14 ноя 17, 12:16    [20952139]     Ответить | Цитировать Сообщить модератору
 Re: Как определить отставание слейва от мастера при репликации  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 3414
pmb17,

А у вас на мастере пишущие транзакции есть? Так как это именно время проигрывания последней ПИШУЩЕЙ транзакции с мастера, и если мастер ничего не делает - то и показывать нечего.
14 ноя 17, 13:43    [20952522]     Ответить | Цитировать Сообщить модератору
 Re: Как определить отставание слейва от мастера при репликации  [new]
pmb17
Member

Откуда:
Сообщений: 71
Да есть, сервер рабочий.
14 ноя 17, 13:52    [20952574]     Ответить | Цитировать Сообщить модератору
 Re: Как определить отставание слейва от мастера при репликации  [new]
pmb17
Member

Откуда:
Сообщений: 71
Вообщем не совсем адекватный алгоритм работы этой функции.
Перезапустил слейв, и примерно в течении часа pg_last_xact_replay_timestamp() ничего не возвращал.
Потом вернул дату и время, но в течении для эта дата и время очень медленно менялись. И если пользоваться выражением:
select now() - pg_last_xact_replay_timestamp() то разрыв только увеличивается, хотя на мастере размер pg_xlog начал уменьшаться.
14 ноя 17, 17:21    [20953545]     Ответить | Цитировать Сообщить модератору
 Re: Как определить отставание слейва от мастера при репликации  [new]
vyegorov
Member

Откуда: Рига
Сообщений: 998
pmb17,

Функция работает адекватно. Другой вопрос — что у вас с репликацией происходит. И почему?..
14 ноя 17, 19:01    [20953983]     Ответить | Цитировать Сообщить модератору
 Re: Как определить отставание слейва от мастера при репликации  [new]
pmb17
Member

Откуда:
Сообщений: 71
Слейв отстал от мастера на 3 дня, если судить по датам WAL мастера в каталоге pg_xlog.
Размер pg_xlog стал в два раза больше чем размер базы данных.
Вчера начали разбираться в причине - оказалось не хватает скорости VPN канала между серверами. Скорость увеличили, за вчерашний день слейв догнал мастера.

Описываемое поведение pg_last_xact_replay_timestamp() было вчера, когда увеличили пропускную способность VPN соединения.

Есть еще вопрос по теме репликации. На мастере периодически выполняется реиндексация. Если я правильно понимаю, во время работы реиндексации все изменения фиксируются в WAL и потом уходят на слейв. Но по факту эта операция не изменяет самих данных в БД. Можно что-то сделать чтобы результат реиндексации не попадал в данные для реплицирования?
15 ноя 17, 10:40    [20955036]     Ответить | Цитировать Сообщить модератору
 Re: Как определить отставание слейва от мастера при репликации  [new]
Lonepsycho
Member

Откуда: Siauliai, Литва
Сообщений: 510
pmb17,

судя по именам каталогов, у вас не 10. тогда можете использовать hash индексы. они до 10-тки не wal'ятся. правда, какой толк тогда от реплики, не понятно.
15 ноя 17, 10:46    [20955063]     Ответить | Цитировать Сообщить модератору
 Re: Как определить отставание слейва от мастера при репликации  [new]
vyegorov
Member

Откуда: Рига
Сообщений: 998
pmb17
Есть еще вопрос по теме репликации. На мастере периодически выполняется реиндексация. Если я правильно понимаю, во время работы реиндексации все изменения фиксируются в WAL и потом уходят на слейв. Но по факту эта операция не изменяет самих данных в БД. Можно что-то сделать чтобы результат реиндексации не попадал в данные для реплицирования?


Нельзя. Все варианты с отключением WAL-ов на мастере (а-ля UNLOGGED) сделают объекты недоступными на реплике.
15 ноя 17, 11:52    [20955377]     Ответить | Цитировать Сообщить модератору
 Re: Как определить отставание слейва от мастера при репликации  [new]
pmb17
Member

Откуда:
Сообщений: 71
Lonepsycho
pmb17,
судя по именам каталогов, у вас не 10. тогда можете использовать hash индексы. они до 10-тки не wal'ятся. правда, какой толк тогда от реплики, не понятно.

у нас работой с БД управляет приложение, индексы изменить не сможем.
Смысл - нужна точная копия БД, возможно без индексов.
Кажется в 10 сделали выборочную репликацию таблиц, возможно это то что нам нужно.
15 ноя 17, 14:06    [20956063]     Ответить | Цитировать Сообщить модератору
 Re: Как определить отставание слейва от мастера при репликации  [new]
Lonepsycho
Member

Откуда: Siauliai, Литва
Сообщений: 510
pmb17,

"возможно без" это уже не "точная копия". как варианты, можете посмотреть pglogical или slony.
15 ноя 17, 14:25    [20956161]     Ответить | Цитировать Сообщить модератору
 Re: Как определить отставание слейва от мастера при репликации  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 3414
pmb17
Смысл - нужна точная копия БД, возможно без индексов.


Вы уж решите или точная копия или без индексов :). Это противоположные требования.

PS: периодический reindex идея изрядно неудачная лучше разобраться надо ли это и зачем.
15 ноя 17, 15:21    [20956532]     Ответить | Цитировать Сообщить модератору
 Re: Как определить отставание слейва от мастера при репликации  [new]
pmb17
Member

Откуда:
Сообщений: 71
Maxim Boguk
PS: периодический reindex идея изрядно неудачная лучше разобраться надо ли это и зачем.


Разбираться наверное с реиндексированием будем но позже. А что неудачного в идее периодического reindex?
15 ноя 17, 17:27    [20957205]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить