Шаг.1 $ git submodule update
Шаг 2 To be commented out the dependences of classpass
Выполнение запросов на сервере «горячего резервирования» несколько сложно: он может выйти из строя, потому что во время запроса некоторые необходимые строки могут быть обновлены или удалены на основном. Как первичный не знает, что запрос запускается вторично, он думает, что он может очистить (вакуум) старые версии своих строк. Затем вторичный должен повторить эту очистку и должен принудительно отменить все запросы, которые могут использовать эти строки.
Более длинные запросы будут отменены чаще.
Вы можете обойти это, запустив повторяющаяся транзакция чтения на первичной основе, которая выполняет фиктивный запрос, а затем сидит без дела, пока реальный запрос запускается вторично. Его присутствие предотвратит пылесосы старых версий строк на первичных.
Подробнее об этой теме и других обходных решениях объясняется в разделе «Горячий режим ожидания - обработка запросов» в документации.
Данные таблицы на подчиненном подчиненном сервере горячего резервирования изменяются, когда выполняется длительный запрос. Решение (PostgreSQL 9.1+), чтобы убедиться, что данные таблицы не изменены, заключается в приостановке репликации и возобновлении после запроса:
select pg_xlog_replay_pause(); -- suspend
select * from foo; -- your query
select pg_xlog_replay_resume(); --resume
Нет необходимости запускать незанятые транзакции на ведущем устройстве. В postgresql-9.1 наиболее прямым способом решения этой проблемы является установка
hot_standby_feedback = on
. Это позволит мастеру узнать о длинных запросах. Из docs :
Первый параметр - установить параметр hot_standby_feedback, который не позволяет VACUUM удалять недавние мертвые строки и поэтому конфликты очистки не возникают.
Почему это не по умолчанию? Этот параметр был добавлен после первоначальной реализации, и это единственный способ, который резервный может повлиять на мастер.
Как указано здесь около hot_standby_feedback = on
:
Ну, недостатком этого является то, что резерв может раздувать мастера, что может быть удивительно для некоторых людей ,
И здесь :
С какими настройками max_standby_streaming_delay? Я предпочел бы установить значение по умолчанию, равное -1, чем по умолчанию hot_standby_feedback. Таким образом, то, что вы делаете в режиме ожидания, влияет только на режим ожидания
Итак, я добавил
max_standby_streaming_delay = -1
И не более
pg_dump
ошибка для нас, ни мастер-раздувание:)