172 похожих чатов

Может у кого-то есть опыт тюнинга репликации. Ситуация такая. Есть мастер,

есть реплика.
PG10
На на мастере запустили довольно тяжелый запрос
который заполняет таблицу данными из других таблиц
размер таблицы около 2GB после заполнения.
Во время заполнения через некоторое время отвалилась реплика.
Предположил что реплике не хватило количества wal файлов
как я понял за это отвечает параметр конфигурации
wal_keep_segments
и сейчас он выставлен в 128
и всё работало отлично
видимо первый раз такая большая таблица попалась

вопрос - правильно ли я копаю?
и как правильно рассчитывать этот параметр?
и какие побочки могут быть если его увеличить?

4 ответов

7 просмотров

у вас WAL файлы быстро “ротируются”. предположим, что все 2Gb попали в WAL (это 128 сегментов). чекпойнты из коробки срабатывают при записи 1GB (64 сегмента), значит у вас было 2 чекпойнта, значит WAL-ы успели отротироваться на мастере. если всё это было быстрее, чем эти ваши 2GB могли пролезть по сети — мы пришли к тому, что на мастере мы слишком быстро промотали WAL. я бы рекомендовал посмотреть на настройки контрольных точек в первую очередь, при адекватных настройках мастер не будет так быстро ротировать сегменты. я обычно ставлю таймаут в 1 час и ставлю max_wal_size=16G ну и да, wal_keep_segments тоже помогут. 1024 = +16GB на диске

> Предположил что реплике не хватило количества wal файлов Да, скорее всего. > за это отвечает параметр конфигурации wal_keep_segments В том числе, да. > и как правильно рассчитывать этот параметр? А почему бы не посмотреть на слоты репликации вместо этого параметра?

А я бы настроил archive_command на мастере и restore_command на реплике. Слоты репликации имеют очень неприятное свойство забивать $PG_DATA, когда реплика начинает отставать, а вы с этим ничего поделать не можете. Было и такое - диски на реплике просели на запись, и оппа! 95% PG_DATA занято. Аврал, полкомпании рвут все разные части тел, ну и вот это вот всё...

Михаил Шурутов
А я бы настроил archive_command на мастере и resto...

Можно и то, и другое настраивать, кстати. ;) Но если уже есть архив или есть возможность его сделать (+ещё сервер, то есть) — лучше streaming + restore_command, да.

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Привет, запускаю werf в dind в k8s, получаю ошибку на этапе build/beforeSetup: /.werf/stapel/embedded/bin/bash: /.werf/scripts/5898bdfe5214357d3706b879cc8d3d78460fb379607cbd...
florius0
7
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
Добрый день, чат. Мне в очередь из других RabbitMQ по shovel валятся метрики в формате текста для Prometheus. Помогите пожалуйста подружить RabbitMQ и Prometheus, чтобы он (...
Aleksey
4
Карта сайта