Перейти к основному содержимому

Факторы замедления логической репликации и накопления WAL

В статье описаны особенности, влияющие на скорость работы логической репликации. Материалы применимы при диагностике и устранении задержки логической репликации, а также при накоплении WAL-файлов на источнике данных.

Задержка логической репликации

Задержка логической репликации (logical replication lag) — отставание приемника данных от источника, измеряемое разницей между текущей позицией LSN (Log Sequence Number, номер последовательности журнала) на источнике и позицией LSN, до которой данные уже переданы и применены на приемнике.

примечание

Приемник данных в контексте логической репликации является узлом на котором определена подписка. Сервер-подписчик (subscriber) получает изменения от сервера-издателя (publisher) через механизм публикаций и подписок. Приемник декодирует WAL-записи, извлекает изменения строк (INSERT, UPDATE, DELETE) при формировании логических изменений и применяет их к своим таблицам. Дополнительные сведения приведены в разделе «Логическая репликация».

Отставание измеряется числовой разницей текущей позицией последовательного номера указывающего на место в потоке WAL-записей (LSN) и позицией, переданных приемнику данных. Позиция передоваемая приемнику в свою очередь больше позиции до которой необходимо удерживать WAL-файлы из-за работающих транзакций.

Отставание логической репликации связано со следующими факторами:

  • позиция LSN самой старой незавершенной транзакции;
  • объем генерируемых WAL-файлов в момент времени;
  • скорость логического декодирования;
  • скорость передачи данных на сторону приемника.

Факторы, влияющие на объем WAL-файлов

WAL-файлы фиксируют изменения данных в системе и служат источником информации для логической репликации. Увеличение объема журналов приводит к росту данных, подлежащих обработке и передаче, что напрямую влияет на задержки. Влияние на объем WAL определяют:

  • интенсивность прикладной нагрузки;
  • объем работы, вызванной служебными процессами, в частности очисткой таблиц;
  • настройки сжатия WAL-журналов.

Факторы, влияющие на скорость логического декодирования

Логическое декодирование — процесс извлечения изменений строк с помощью DML-операций, которые позволяют получать нужные сведения из записей WAL. Скорость работы процесса определяется совокупностью факторов, сгруппированных по следующим категориям.

Характеристика нагрузки:

  • тип изменений (INSERT, UPDATE, DELETE, смешанная нагрузка) и объем транзакции;
  • распределение таблиц по публикациям (одна или несколько публикаций), а также нагрузка на отдельные таблицы;
  • структура реплицируемых таблиц, особенно при использовании TOAST-сегментов.

Настройки источника:

  • параметр replica identity на таблицах определяет, какие данные записываются в WAL для операции UPDATE/DELETE;
  • количество процессов логического декодирования (публикаций), каждый из которых обрабатывает весь объем WAL-файлов системы;
  • общая нагрузка на БД источника;
  • параметры оборудования, особенно производительность процессора(CPU).

Версия и конфигурация:

  • версия Pangolin DB и параметры логической репликации (используемый плагин декодирования, streaming-протокол);
  • накладные расходы при распаковке сжатых WAL-файлов.
примечание

Каждая публикация запускает отдельный процесс декодирования, который просматривает весь WAL источника. Увеличение количества публикаций приводит к пропорциональному росту нагрузки на систему.

Оценка скорости логической репликации

Скорость логической репликации формируется под влиянием совокупности описанных выше характеристик нагрузки, настроек источника и производительности логического декодирования. Скорость процесса логического декодирования должна быть достаточной для обработки всего объема WAL-файлов без накопления критического отставания репликации.

Прямое влияние на скорость оказывает характер прикладной нагрузки. Увеличение замедления невозможно устранить при наличии длительно выполняющихся транзакций, так как WAL-файлы не могут быть переработаны до их завершения.

Факторы, влияющие на скорость, взаимосвязаны, что может затруднить определение первопричины. Необходимо искать баланс настроек и архитектуры, в частности выбирать оптимальное количество публикаций с учетом накладных расходов на каждую из них.

Рекомендации по тестированию

Все указанные особенности необходимо проверять на стендах нагрузочного тестирования при равной и повышенной нагрузке (х2/х3) для получения значений:

  • текущей скорости декодирования логической репликации;
  • допустимой скорости декодирования;
  • максимально возможной скорости декодирования в трактах передачи данных конкретной автоматизированной системы.

Полученные данные используются для проектирования масштабирования ППО (промежуточное программное обеспечение) при изменяющейся входной информации.

Таким образом, скорость логической репликации определяется балансом между объемом генерируемых WAL-файлов и производительностью процесса логического декодирования. Отставание репликации и рост количества WAL-файлов на источнике требует последовательной диагностики: анализа прикладной нагрузки, настроек публикаций, параметров replica identity и характеристик оборудования. Нагрузочное тестирование при плановой и пиковой нагрузке позволит получить эталонные показатели скорости репликации и использовать их для планирования масштабируемой архитектуры.

Дополнительная информация

  1. Логическая репликация
  2. Настройка WAL
  3. Внутреннее устройство WAL
  4. Журнал предзаписи (WAL)