Я пытаюсь обойти тот факт, что PostgreSQL 9.5 не поддерживает запрос задержки репликации из горячего резервирования (возможно запросить задержку с главного сервера, но я пытаюсь избежать подключения к главному серверу, если это абсолютно не нужно) , Мы используем серверы реплики с горячим резервированием в качестве серверов только для чтения для нашего веб-сервиса, и мы хотим игнорировать сервер, если он слишком сильно задерживается от главного сервера. Для обсуждения давайте предположим, что при доступе к данным через горячий резерв допустима задержка менее 5 секунд.
Можно ли определить на главном сервере переменную, которая будет реплицироваться на подчиненные (реплики горячего резервирования в asyn c режим потоковой передачи)?
В настоящее время у меня есть таблица из одной строки и одного столбца для хранения глобальной метки времени в базе данных, и я проверяю эту метку времени, прежде чем обращаться к другим данным через реплику горячего резервирования. И скрипт обновляет эту метку времени каждую секунду в базе данных master. Тем не менее, я не могу проверить метку времени в транзакции, или я получу откат транзакций, набрав
40001 terminating connection due to conflict with recovery
User query might have needed to see row versions that must be removed.
In a moment you should be able to reconnect to the database and repeat your command.
Есть ли какой-либо прием, который может опубликовать sh некоторые данные с главных серверов на серверы горячего резервирования, к которым можно получить доступ в то время как транзакция активна? Мне не нужна возможность откатить изменения этой переменной, и ей не нужно следить за транзакциями (то есть, все в порядке, что значение этой переменной изменяется, даже когда транзакция в режиме повторяющейся изоляции при чтении активна).