HQbird Репликация
Нативная репликация «ведущий-ведомый» в HQbird Enterprise: DML и DDL, без триггеров, уникальные или первичные ключи на реплицируемых таблицах. 100% совместимость с Firebird 2.5-5.0 - смена бинарных файлов без резервного копирования и восстановления. Одна лицензия покрывает один ведущий и одну реплику; дополнительные реплики продаются отдельно.
Асинхронная и синхронная
Асинхронная обычно является правильным выбором для производства.
Асинхронная (рекомендуется)
Ведущий записывает зафиксированные изменения в файлы сегментов; реплики забирают и применяют их в фоновом режиме. Сброс по умолчанию - 90 секунд (часто устанавливают 15-30). Реплику можно пересоздать онлайн; остановка ведущего не требуется для запуска. Подходит для облака или каналов с высокой задержкой. Задержка может расти при высокой нагрузке.
Синхронная
Ведущий записывает зафиксированные изменения напрямую на реплику(и). Задержка ~1-2 секунды; требуется стабильный канал ~1 Гбит/с. Реплика доступна только для чтения (с оговорками). Пересоздание реплики требует остановки ведущего. Используйте для собственного переключения при сбое (3+ узла), разгрузки чтения или в сочетании с асинхронной.
Установка
Установите 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
Шаги - асинхронная репликация
- Настройте базу данных как ведущую.
- Создайте файл реплики (
nbackupили «Переинициализировать базу реплики»). - Настройте сервер реплики.
Шаг 1 - Ведущий
Откройте http://127.0.0.1:8082 (порт настраивается). Войдите admin / надёжный пароль. Убедитесь, что виджет Active server показывает Firebird 2.5/3.0/4.0/5.0 HQbird.
Добавьте базу данных: псевдоним плюс путь к файлу, а не алиас - алиасы не реплицируются.
Откройте репликацию через значок в заголовке базы данных. Выберите Master → Asynchronous → Save. Перезапустите Firebird (или все соединения Classic), чтобы параметры загрузились при первом подключении.
- 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. Значения по умолчанию импортируются из папки рядом с репликой; обработанные сегменты удаляются. Не смешивайте архивы из разных баз данных в одной папке.
Шаги - синхронная репликация
- Остановите Firebird.
- Скопируйте файл мастера, переключите его в режим реплики, скопируйте на сервер(ы) реплики.
- Настройте сервер(ы) реплики в FBDataGuard.
- Запустите реплику(и) до мастера.
- Настройте мастер, затем запустите мастер.
Простоя больше, чем при асинхронной репликации: реплика должна быть онлайн до запуска мастера. Пример удаленной реплики: сервер replicaserver, путь /data/test2.fdb. На реплике достаточно gfix -replica {master-guid} в дополнение к этой копии.
Тестирование на производственной системе
Установите disable_on_error в true, чтобы ошибка репликации отключала репликацию, а мастер продолжал работать. Повторно инициализируйте из чистого журнала после исправления ошибки. Включите задание Replication log в FBDataGuard для отслеживания ошибок и предупреждений.
Создание копии реплики с помощью 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.
gfix disk:\path\mydatabase.fdb -replica {guid} -user SYSDBA -pass masterkey
gfix disk:\path\mydatabase.fdb -replica {} -user SYSDBA -pass masterkey
Пустые {} возвращают файл в обычный режим (чтение-запись). На реплике можно выполнять работу только для чтения (SELECT); не изменяйте данные и метаданные.