Эта страница переведена машинным переводом. Читайте английский оригинал. English

Нативная репликация «ведущий-ведомый» в HQbird Enterprise: DML и DDL, без триггеров, уникальные или первичные ключи на реплицируемых таблицах. 100% совместимость с Firebird 2.5-5.0 - смена бинарных файлов без резервного копирования и восстановления. Одна лицензия покрывает один ведущий и одну реплику; дополнительные реплики продаются отдельно.

Асинхронная и синхронная

Асинхронная обычно является правильным выбором для производства.

Асинхронная (рекомендуется)

Ведущий записывает зафиксированные изменения в файлы сегментов; реплики забирают и применяют их в фоновом режиме. Сброс по умолчанию - 90 секунд (часто устанавливают 15-30). Реплику можно пересоздать онлайн; остановка ведущего не требуется для запуска. Подходит для облака или каналов с высокой задержкой. Задержка может расти при высокой нагрузке.

Синхронная

Ведущий записывает зафиксированные изменения напрямую на реплику(и). Задержка ~1-2 секунды; требуется стабильный канал ~1 Гбит/с. Реплика доступна только для чтения (с оговорками). Пересоздание реплики требует остановки ведущего. Используйте для собственного переключения при сбое (3+ узла), разгрузки чтения или в сочетании с асинхронной.

Асинхронная репликация Firebird: сегменты журнала от ведущего к реплике
Асинхронная: сегменты на диске, применяются в фоновом режиме.
Синхронная репликация Firebird: ведущий записывает напрямую на реплику
Синхронная: пакеты при фиксации через активное соединение.

Установка

Установите HQbird Server с Firebird на ведущем и реплике. Windows: HQbirdServer2024.exe (2.5-5.0). Административные инструменты необязательны для репликации. Linux: руководство по установке. Зарегистрируйтесь с пробной или полной лицензией. Руководство пользователя §2 описывает настройку сервера.

Firebird 2.5: HQbird устанавливает SuperClassic. Если в заголовке базы данных большое количество буферов страниц, производительность может снизиться. Установите буферы в 0, чтобы firebird.conf имел приоритет:

gfix -buff 0 -user SYSDBA -pass masterkey disk:\path\database.fdb

Шаги - асинхронная репликация

  1. Настройте базу данных как ведущую.
  2. Создайте файл реплики (nbackup или «Переинициализировать базу реплики»).
  3. Настройте сервер реплики.

Шаг 1 - Ведущий

Откройте http://127.0.0.1:8082 (порт настраивается). Войдите admin / надёжный пароль. Убедитесь, что виджет Active server показывает Firebird 2.5/3.0/4.0/5.0 HQbird.

Консоль HQbird готова добавить базу данных для репликации

Добавьте базу данных: псевдоним плюс путь к файлу, а не алиас - алиасы не реплицируются.

Диалог добавления базы данных с явным путём к файлу

Откройте репликацию через значок в заголовке базы данных. Выберите MasterAsynchronous → Save. Перезапустите Firebird (или все соединения Classic), чтобы параметры загрузились при первом подключении.

Базовые настройки асинхронной репликации ведущего
Базовая настройка ведущего.
Полные параметры асинхронной репликации ведущего
More >> - значения по умолчанию подходят для чистой установки.
  • Log directory - рабочие сегменты, по умолчанию ${db.default-directory}\ReplicationLog. Управляется движком; оставьте как есть.
  • Log archive directory - архивные сегменты, по умолчанию ${db.path}.LogArch рядом с базой данных.
  • Override log archive command - оставьте пустым.
  • Force flush committed data - по умолчанию 90 секунд.

Сразу после записи вы должны увидеть вращающиеся файлы в каталоге журнала, затем архивные сегменты после фиксации/таймаута. Не трогайте рабочие сегменты. Копирование архивов на реплику: сетевая папка или FTP/SSH.

Файлы сегментов репликации на диске

Шаг 2 - Начальный файл реплики

Начиная с HQbird 2018 R2, Reinitialize replica database создаёт копию рядом с ведущим, с именем вида employee30.fdb.17-Apr-2018_142507.4replica. Или используйте nbackup без остановки ведущего.

Шаг 3 - Сервер реплики

Зарегистрируйте реплику в FBDataGuard после того, как у неё появится GUID реплики. Обязательный параметр - папка архивных сегментов. Сохраните и перезапустите Firebird. Значения по умолчанию импортируются из папки рядом с репликой; обработанные сегменты удаляются. Не смешивайте архивы из разных баз данных в одной папке.

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

Шаги - синхронная репликация

  1. Остановите Firebird.
  2. Скопируйте файл мастера, переключите его в режим реплики, скопируйте на сервер(ы) реплики.
  3. Настройте сервер(ы) реплики в FBDataGuard.
  4. Запустите реплику(и) до мастера.
  5. Настройте мастер, затем запустите мастер.

Простоя больше, чем при асинхронной репликации: реплика должна быть онлайн до запуска мастера. Пример удаленной реплики: сервер replicaserver, путь /data/test2.fdb. На реплике достаточно gfix -replica {master-guid} в дополнение к этой копии.

Конфигурация синхронной репликации

Тестирование на производственной системе

Установите disable_on_error в true, чтобы ошибка репликации отключала репликацию, а мастер продолжал работать. Повторно инициализируйте из чистого журнала после исправления ошибки. Включите задание Replication log в FBDataGuard для отслеживания ошибок и предупреждений.

disable_on_error true для тестирования репликации
Задание мониторинга журнала репликации в HQbird

Создание копии реплики с помощью nbackup

Работает онлайн для асинхронной репликации (и дополнительных реплик) без остановки мастера. Или остановите Firebird и скопируйте файл.

nbackup -l database_path_name -user SYSDBA -pass masterkey
copy database_path_name replica_path_name
nbackup -n database_path_name -user SYSDBA -pass masterkey
nbackup -f replica_path_name
gfix replica_path_name -replica {DATABASEGUID} -user SYSDBA -pass masterkey

DATABASEGUID - уникальный идентификатор мастера из gstat -h. Если он отсутствует, подключитесь один раз с помощью бинарных файлов Firebird от HQbird и снова выполните gstat -h.

gstat -h с указанием GUID базы данных
gfix disk:\path\mydatabase.fdb -replica {guid} -user SYSDBA -pass masterkey
gfix disk:\path\mydatabase.fdb -replica {} -user SYSDBA -pass masterkey

Пустые {} возвращают файл в обычный режим (чтение-запись). На реплике можно выполнять работу только для чтения (SELECT); не изменяйте данные и метаданные.