×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

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

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

Глава 5.13. Отслеживание прогресса репликации

Источники репликации предназначены для упрощения реализации решений логической репликации поверх логического декодирования. Они предоставляют решение двух распространённых проблем:

  • Как безопасно отслеживать прогресс репликации

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

Источники репликации имеют всего два свойства: имя и идентификатор (ID). Имя, которое следует использовать для ссылки на источник в разных системах, — это произвольный text. Его следует использовать таким образом, чтобы конфликты между источниками репликации, созданными различными решениями репликации, были маловероятны; например, добавляя имя решения репликации в качестве префикса. Идентификатор используется только для того, чтобы избежать необходимости хранить длинную версию в ситуациях, где важна эффективность использования пространства. Он никогда не должен быть общим для разных систем.

Источники репликации можно создавать с помощью функции pg_replication_origin_create(); удалять с помощью pg_replication_origin_drop(); и просматривать в системном каталоге pg_replication_origin.

Одна из нетривиальных частей построения решения репликации — это безопасное отслеживание прогресса применения изменений. Когда процесс применения или весь кластер завершается аварийно, должна быть возможность определить, до какого места данные были успешно реплицированы. Наивные решения этой проблемы, такие как обновление строки в таблице для каждой применённой транзакции, имеют недостатки вроде накладных расходов во время выполнения и раздувания базы данных.

Используя инфраструктуру источников репликации, сеанс может быть помечен как применяющий изменения с удалённого узла (с помощью функции pg_replication_origin_session_setup()). Дополнительно LSN и метка времени фиксации каждой исходной транзакции могут быть настроены на основе каждой транзакции с помощью pg_replication_origin_xact_setup(). Если это сделано, прогресс репликации будет сохраняться устойчиво к сбоям. Прогресс применения для всех источников репликации можно увидеть в представлении pg_replication_origin_status . Прогресс отдельного источника, например, при возобновлении репликации, можно получить с помощью pg_replication_origin_progress() для любого источника или pg_replication_origin_session_progress() для источника, настроенного в текущем сеансе.

В топологиях репликации более сложных, чем репликация строго с одной системы на другую, может возникнуть другая проблема: трудно избежать повторной репликации уже применённых строк. Это может приводить как к циклам в репликации, так и к неэффективности. Источники репликации предоставляют дополнительный механизм для распознавания и предотвращения этого. Когда они настроены с помощью функций, упомянутых в предыдущем абзаце, каждое изменение и транзакция, передаваемые в callback-функции выходного плагина (см. Раздел 5.12.6), сгенерированные сеансом, помечаются источником репликации этого генерирующего сеанса. Это позволяет обрабатывать их по-разному в выходном плагине, например, игнорируя все строки, кроме локальных. Дополнительно callback-функция filter_by_origin_cb может использоваться для фильтрации потока изменений логического декодирования на основе источника. Хотя она менее гибка, фильтрация через этот callback значительно эффективнее, чем выполнение её в выходном плагине.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению