|
DETAIL: Пользователь удерживал блокировку таблицы слишком долго.
|
|||
---|---|---|---|
#18+
Добрый вечер. Вот такая ошибка возникает при потоковой репликации и длинном запросе. ОШИБКА: выполнение оператора отменено из-за конфликта с процессом восстановления DETAIL: Пользователь удерживал блокировку таблицы слишком долго. Подскажите пожалуйста из-за чего эта ошибка? И как от нее избавиться? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 16:15 |
|
DETAIL: Пользователь удерживал блокировку таблицы слишком долго.
|
|||
---|---|---|---|
#18+
user_t0, из-за конфликта репликации, как написано. Репликация говорит делай Х, реплика видит "не могу сделать Х, оно ещё нужно моему выполняемому запросу".. Что делать реплике? - ждать завершение запроса и приостановить репликацию - продолжить репликацию и отменить запущенный запрос Сначала ждём до max_standby_streaming_delay, затем отменяем. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 16:40 |
|
DETAIL: Пользователь удерживал блокировку таблицы слишком долго.
|
|||
---|---|---|---|
#18+
Melkijuser_t0, из-за конфликта репликации, как написано. Репликация говорит делай Х, реплика видит "не могу сделать Х, оно ещё нужно моему выполняемому запросу".. Что делать реплике? - ждать завершение запроса и приостановить репликацию - продолжить репликацию и отменить запущенный запрос Сначала ждём до max_standby_streaming_delay, затем отменяем. Спасибо за ответ. Но, на мастере есть слот репликации, который связан с репликой. Я думал он как раз и служит для того, чтобы не было подобных конфликтов и чтобы он держал нужные реплике данные на мастере, не позволяя их вычищать вакууму. Т.е. получается что в любом случае запрос не может быть дольше чем max_standby_streaming_delay ? (Хоть со слотом хоть без) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 16:44 |
|
DETAIL: Пользователь удерживал блокировку таблицы слишком долго.
|
|||
---|---|---|---|
#18+
Как же тогда настроить мастер-реплика, чтобы реплика могла выдержать запросы по несколько минут и при этом не было отставания от мастера более чем 10-20 сек ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 16:46 |
|
DETAIL: Пользователь удерживал блокировку таблицы слишком долго.
|
|||
---|---|---|---|
#18+
user_t0Но, на мастере есть слот репликации, который связан с репликой. Я думал он как раз и служит для того, чтобы не было подобных конфликтов и чтобы он держал нужные реплике данные на мастере, не позволяя их вычищать вакууму. Вообще никак не связан. Слот репликации - чтобы база не удалила WAL. Писать в WAL база может что угодно и сколько угодно пока не закончится место на диске. Реплика может вовсе не использовать протокол репликации и быть всё равно репликой. Старые file shipping через archive_command/restore_command - в этом случае между мастером и репликой канала связи может не быть в принципе. user_t0Т.е. получается что в любом случае запрос не может быть дольше чем max_standby_streaming_delay ? (Хоть со слотом хоть без) Может, max_standby_streaming_delay считается от начала конфликта репликации. user_t0Как же тогда настроить мастер-реплика, чтобы реплика могла выдержать запросы по несколько минут и при этом не было отставания от мастера более чем 10-20 сек ? hot_standby_feedback если вы понимаете как это будет воздействовать на весь кластер. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 16:56 |
|
DETAIL: Пользователь удерживал блокировку таблицы слишком долго.
|
|||
---|---|---|---|
#18+
Melkijuser_t0Но, на мастере есть слот репликации, который связан с репликой. Я думал он как раз и служит для того, чтобы не было подобных конфликтов и чтобы он держал нужные реплике данные на мастере, не позволяя их вычищать вакууму. Вообще никак не связан. Слот репликации - чтобы база не удалила WAL. Писать в WAL база может что угодно и сколько угодно пока не закончится место на диске. Реплика может вовсе не использовать протокол репликации и быть всё равно репликой. Старые file shipping через archive_command/restore_command - в этом случае между мастером и репликой канала связи может не быть в принципе. user_t0Т.е. получается что в любом случае запрос не может быть дольше чем max_standby_streaming_delay ? (Хоть со слотом хоть без) Может, max_standby_streaming_delay считается от начала конфликта репликации. user_t0Как же тогда настроить мастер-реплика, чтобы реплика могла выдержать запросы по несколько минут и при этом не было отставания от мастера более чем 10-20 сек ? hot_standby_feedback если вы понимаете как это будет воздействовать на весь кластер. Благодарю, картина проясняется. Правильно ли я понял что слот репликации нужен только для того, чтобы мастер не удалил WAL файлы, которые не применились на реплике? Т.е. на потоковую репликацию он вообще не влияет пока она не станет файловой (из-за недоступности порта, например). hot_standby_feedback - это реплика сообщает какой минимальный номер транзакции ей требуется и мастер его держит. Соответсвенно, длинные транзакции на реплике начинают так же влиять на мастер, как если бы они на нем выполнялись. Или есть еще какие-то подводные камни с hot_standby_feedback? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 17:13 |
|
DETAIL: Пользователь удерживал блокировку таблицы слишком долго.
|
|||
---|---|---|---|
#18+
user_t0Правильно ли я понял что слот репликации нужен только для того, чтобы мастер не удалил WAL файлы, которые не применились на реплике? пока реплика не ответила что эти сегменты получила. Никакой зависимости от "применились". Слот может читать вовсе не реплика. а barman какой-нибудь для целей ведения PitR бекапа. user_t0Т.е. на потоковую репликацию он вообще не влияет пока она не станет файловой (из-за недоступности порта, например). То есть гарантирует, что сколько бы ни была недоступна реплика - она сможет догнать мастер только по streaming репликации. Потому что база где слот создан (это не обязательно мастер) эти WAL не удалит пока их кто-то не прочитает. Даже если при этом база грохнется в ошибку из-за полного исчерпания места на диске user_t0hot_standby_feedback - это реплика сообщает какой минимальный номер транзакции ей требуется и мастер его держит. Соответсвенно, длинные транзакции на реплике начинают так же влиять на мастер, как если бы они на нем выполнялись. Да, это. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 18:30 |
|
|
start [/forum/topic.php?fid=53&fpage=36&tid=1995013]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 149ms |
0 / 0 |