-
Notifications
You must be signed in to change notification settings - Fork 86
archive mode и ошибка вида WAL segment %s could not be archived in %d seconds #209
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Добрый день! |
уже итак подняли archive-timeout до 8000, но иногда и этого не хватает. |
Это кол-во файлов, которое один процесс |
Я тут немного подумал, в случае, если постгрес вернул нормальный LSN, мы можем сохранить его в контрол файл до начала ожидания сегмента. Тогда получится поведение, которое Вы хотите. |
т.е. если указать опции -j 8 --batch-size=100, то в итоге за один вызов archive_command должно архивироваться 800 WAL? |
Нет, будет сархивировано максимум 100 с помощью 8 потоков. |
Как успехи? |
сейчас пока выполняется FULL (это примерно на 30 часов), поэтому только после его завершения смогу сообщить, как пойдут DELTA/PAGE. |
Можно посмотреть в логе постгреса с какой скоростью идет архивирование.
|
пробовали запустить DELTA в режиме --stream и с использованием слота репликации, в итоге бэкап закончился Суть данной ошибки непонятна, pg_probackup же должен использовать слот репликации. |
Сервер со своей стороны закрыл соединение, надо смотреть в логе постгреса почему он это сделал.
|
А зачем Вам делать STREAM бэкапы, если у Вас есть архивирование? Или это другой инстанс? |
перебираем все прочие варианты, раз уж в режиме archive не получается уже 2 суток ничего сделать. Ошибка завершения сессии pg_probackup из лога postgres 2020-05-21 11:46:24 MSK [23551]: [3-1] us=backup,tx=0,db=[unknown],app=pg_probackup,cli=127.0.0.1 LOG: terminating walsender process due to replication timeout |
Так давайте решим проблему с архивированием. |
в среднем 1 WAL/s, в пике может до 3 WAL/s (в течении нескольких часов) |
Это не очень высокая скорость генерации WAL.
|
странно, видимо, после обновления на версию 2.3 в файла лог не попадает archive_push при таких установках |
Архивирование через ssh работает? |
нет, локально |
Хм, странно, сейчас посмотрю. |
включил, в логе postgres появились записи |
так а какой параметр важнее -j или --batch-size? |
|
Поменял но всё-таки выключил, иначе потом отчеты pgbadger немного визуально пострадают Почему перестал работать log-level-file ? |
log-level-console = OFF не работает в версии 2.3.1 и 2.3.3 |
Похоже что фикс для этого бага получился слишком оверкильный: #178 |
Давайте посмотрим, сколько нам еще осталось сархивировать:
|
если я правильно посчитал разницу, то это около 30k WAL |
Давайте сделаем --batch-size=1000, и, если есть свободные cpu, увеличим кол-во тредов. |
-j 20 --batch-size 1000 --compress-level=1 INFO: PID [38096]: pg_probackup archive-push WAL file: 00000083000137A30000005C, threads: 10/10, batch: 100/100, compression: zlib INFO: PID [39422]: pg_probackup archive-push completed successfully, pushed: 100, skipped: 0, time elapsed: 8s:626ms |
Сейчас разгребет за полчаса-час. |
Если по диску в архиве еще не умираете, то можно еще |
Как прогресс? |
очень круто
|
теперь в логе появляются строки вида |
Это в пробэкапом логе? |
да |
Видимо бэкап запустился. |
Разгрёб? |
да, бэкапы PAGE начали выполняться |
А можете показать статистику из show? Интересно посмотреть на время. |
|
Хм, интересно. |
не удивлен, что первый PAGE после FULL идёт долго (это и с DELTA аналогично). Просто FULL идет по 30 часов, естественно за такое время изменений очень много.
|
С релизом #201 Вы сможете гораздо реже делать FULL, что позволит сэкономить время и место. |
Можем закрывать? |
Это планируется в #215? |
Ага |
тогда закрываем |
Имеется нагруженный инстанс в плане высокой скорости модификации данных (и соответственно большой cкорости переключения сегментов WAL). Периодически возникает очередь архивации WAL до нескольких тысяч сегментов (archiver не успевает быстро отрабатывать из-за большого потока WAL).
Бэкапы с режимом --stream отпадают из очень большого объема WAL, остаётся только archive.
Но в пики высокой скорости генерации WAL бэкапы DELTA/PAGE не завершаются только из-за ошибки вида "WAL segment %s could not be archived in %d seconds".
Как я понимаю, для успешного завершения инкрементного бэкапа должен выполниться archive_command для WAL с lsn на момент pg_stop_backup().
Из-за большой очереди архивации понятное дело что можно ждать очень долго этого события.
НО! В конечном счёте данный WAL всё же попадет в архив, пусть и спустя время.
Логично было бы иметь возможно запустить validate на такой ошибочный бэкап спустя время (когда WAL с lsn на момент pg_stop_backup() уже будет в архиве), чтобы он проверил, что все необходимые WAL имеются в архиве и поменял статус бэкапа с ERROR на OK.
Очень жалко, когда бэкап DELTA/PAGE объемом по 300 ГБ и выполнявший по несколько часов в итоге становится ошибочным только из-за того, что WAL вовремя не смог попасть в архив.
The text was updated successfully, but these errors were encountered: