Настройка репликации Firebird в HQbird Enterprise
Загрузка
Скачайте дистрибутив HQBird здесь:
- Дистрибутив HQbird ServerSide содержит в себе Firebird 2.5, 3.0, (32bit и 64bit) для Windows
- Дистрибутив HQbird Admin содержит инструменты администраторы (только для Windows)
- Дистрибутив для Linux содержит только 64 битные инсталляторы, отдельно для 2.5 и 3.0.
Внимательно следуйте инструкциям по установке HQbird Enterprise.
Что такое HQbird Enterprise?
- HQbird Enterprise это расширенный дистрибутив Firebird для больших баз данных, с набором инструментов для мониторинга, оптимизации и администирования. Также включает плагин для master-slave репликации.
- HQbird на 100% совместим с Firebird 2.5.5+ и Firebird 3.0 – без изменения формата БД (ODS) и backup/restore репликация будет работать с вашими базами данных.
- HQbird реплицирует изменения DML (INSERT/UPDATE/DELETE, вызовы хранимых процедур, и т.д.) и DDL (CREATE/ALTER TABLE, и т.д); триггеры для этого не нужны. Единственное требование - реплицируемые таблицы должны иметь ограничение целостности Primary/Unique Key.
Как настроить репликацию Firebird с HQbird?
Для использование репликации установите HQbird ServerSide с Firebird, зарегистрируйте HQBird (пробная или полная лицензия) и настройте репликацию. HQbird должен быть запущен на мастер-сервере и на всех серверах-репликах. Firebird должен быть установлен из дистрибутива HQbird ServerSide. С обычным Firebird 2.5 и 3.0 репликация работать не будет.
Ниже будет приведен пример настройки репликации с HQbird Enterprise.
Вы можете протестировать HQbird на Windows и Linux, с Firebird 2.5 и 3.0, 32bit и 64bit.
Асинхронная и синхронная репликация
HQbird поддерживает 2 типа репликации: асинхронную и синхронную.
Асинхронная репликация
В случае асинхронной репликации, мастер-сервер сохраняет изменения, произведенные в БД, в дополнительных файлах (сегментах репликации), которые могут быть переданы асинхронно на один или более серверов-реплик.
Главные возможности асинхронной репликации:
- Изменения немедленно журналируются на стороне мастер-сервера (журнал желательно разместить на отдельном диске)
- Практическая задержка между мастером и репликой около 1 минуты (или более, если этого достаточно по техническим требованиям)
- Журнал состоит из нескольких сегментов (файлов), которые ротируются
- Заполненные сегменты передаются на сервера-реплики и применяются к реплике базы данных в фоновом режиме
- Реплика может быть пересоздана в любой момент
Необходимо отметить
- Задержка между мастером и репликой может расти в случае большой загрузки (в силу отложенной обработки сегментов репликации)
Асинхронная репликация является рекомендованным вариантом для HQbird Enterprise: она обеспечивает стабильность и защиту от повреждений БД Firebird, может быть быстро и просто сконфигурирована, не требует длительной настройки, и подходит для распределенных систем (когда реплика находится в облаке или на удаленном сервере).
Синхронная репликация
При синхронной репликации мастер-сервер напрямую передает изменения одному или нескольким серверам-репликам:
Главные возможности синхронной репликации:
- Изменения буферизируются по транзакциям, передаются пакетами, синхронизируются по commit
- Практическая задержка - 1-2 секунды
- Ошибки репликации могут привести к прекращению репликации или отсоединению реплики
- Реплика доступна для запросов в режиме чтения (с определенными ограничениями)
- Автоматическое восстановление может быть реализовано (при помощи HQbird Cluster Manager)
Необходимо отметить
- Дополнительная нагрузка на процессор и ввод-вывод на стороне реплики
- Требует прямого и постоянного соединения мастера с репликой, сеть 1 гигабит.
- Реплика не может быть пересоздана в онлайне. Инициализация репликации требует остановки мастер-сервера на время создания копии БД
Когда использовать синхронную репликацию:
- Для отказоустойчивого кластера с 3 и более узлов (особенно для веб-приложений)
- Для масштабирования чтения (серверы отчетов, анализ данных, и веб в режиме "только чтение")
- В комбинации с асинхронной репликацией для масштабирования производительности
Установка
Установка на Windows
Мы рекомендуем использовать свежу установку для мастера и реплики: распакуйте HQbird Enterprise из zip-архива, который вы получили для тестирования. Затем запустите cmd.exe (от Администратора), перейдите в папку Firebird и запустите следующие команды: Для установки Firebird SuperClassic 2.5:
instreg
i
instsvc
i –m
instsvc
start
Это установит Firebird 2.5 SuperClassic как службу, с оптимизированной конфигурацией HQbird.
Для установки Classic используйте
instsvc i –c, для установки SuperServer (рекомендуется для 3.0) -
instsvc i -s
Если у вас уже установлен Firebird 2.5.x, остановите его, и сделайте резервную копию папки установки. Затем распакуйте Fireebird из архива HQbird Enterprise поверх текущей установки, за исключением следующих файлов: aliases.conf, firebird.conf, security2.fdb, затем запустите Firebird. Сделайте это на серверах мастера и реплики.
Внимание! Если вы указали слишком большой размер кэша в заголовке БД (gfix -buffers n, gstat-h), и установили SuperClassic или Classic, это может ухудшить производительность Firebird. Чтобы избежать проблемы, установите кэш в БД в 0, пусть используется размер кэша из firebird.conf:
gfix –buff 0 –user SYSDBA –pass
masterkey
disk:\path\database.fdb
Установка HQbird ServerSide
Установите HQbird ServerSide 2017 или выше на мастер и реплику. При установке вы можете выбрать версию Firebird (2.5, 3.0) и разрядность (32бит, 64бит).
Инструкцию по установке можно прочитать здесь.
Полная документация - HQbird User Guide.
Шаги по настройке репликации
Есть несколько обязательных шагов по настройке репликации, которые отличаются у асинхронной и синхронной репликации.
Шаги по настройке асинхронной репликации
- Остановите Firebird
- Скопируйте файл БД (средствами операционной системы) и переключите копию в режим реплики
- Настройте репликацию в HQBird FBDataGuard
- Запустите Firebird на мастер-сервере
- Поместите копию БД (помеченную как реплика) на сервер реплики, и настройте репликацию
- Запустите Firebird на сервере реплики
Шаги по настройке синхронной репликации
- Остановите Firebird
- Скопируйте файл БД (средствами операционной системы), переключите копию в режим реплики, и скопируйте эту копию на серверы реплики
- Настройте сервер реплики в HQbird FBDataGuard (перед настройкой мастер-сервера!)
- Запустите серверы реплики - перед стартом мастер-сервера
- Настройте репликацию в HQBird FBDataGuard на мастер-сервере
- Запустите мастер-сервер
Как вы видите, интервал времени от настройки и запуска синхронной репликации больше, чем для асинхронной, потому что при синхронной репликации реплика должна работать до старта мастер-сервера.
Как создать реплику файла БД
Для старта репликации нам нужно создать исходную копию файла базы данных, которая будет использоваться в качестве целевой БД в процессе репликации. Будем называть такую БД "репликой".
Есть два способа создания реплики:
Простой (рекомендуемый способ)
Остановите Firebird, скопируйте файл базы данных, завершите настройку репликации, затем запустите Firebird.
Для больших баз данных (300 гигабайт и более)
Для асинхронной репликации больших БД, если вы не можете остановить Firebird на время копирования файла БД, можно использовать утилиту nbackup для получения копии БД в онлайне, после чего можно остановить Firebird на короткое время для копирования небольшого delta-файла:
- Заблокируйте БД (nbackup -L database)
- Скопируйте файл БД средствами операционной системы, перенесите копию на сервер реплики.
- Завершите настройку репликации на сервере мастера
- Остановите мастер-сервер, скопируйте дельту на сервер реплики
- Запустите сервер мастера и разблокируйте мастер-БД (nbackup -N database)
- Примените дельту к базе данных реплики (nbackup -F database)
- Запустите сервер реплики
После создания копии файла базы данных необходимо перевести его в режим реплики. Это делается при помощи gfix - БД связывается при помощи GUID с мастер-базой данных. Параметр {guid} является уникальным идентификатором мастер-базы данных. Вы можете получить его из вывода gstat –h database:
Для перевода копии базы данных в режим реплики выполните команду:
gfix disk:\path\mydatabase.fdb -replica {guid} -user SYSDBA -pass masterkey
Для переключения реплики в нормальный режим (не связанный с мастером) выполните ту же команду с пустым GUID:
gfix
disk:\path\mydatabase.fdb -replica {} -user SYSDBA -pass masterkey
Замечание: если вы не видите GUID базы данны в выводе gstat –h, подсоединитесь к мастер-базе данных при помощи Firebird из HQBird Enterprise, и запустите gstat –h снова.
Замечание. Вы можете выполнять любые операции над репликой базы данных, которые не меняют данные или метаданные. Например, это любые читающие операции, такие как SELECT.
Конфигурация репликации
Для настройки репликации откройте HQbird FBDataGuard: запустите современный браузер (Chrome, Firefox, etc) и откройте локальный URL:
http://127.0.0.1:8082
Введите имя и пароль по умолчанию:
admin/strong password. Зарегистрируйте сервер Firebird, при этом на экране будет примерно следующее:
Проверьте, что вы подсоединяетесь к правильной версии Firebird (с репликацией) - в левом верхнем углу с «Active server» должна быть указана версия «… Firebird x.x HQbird».
Затем нажмите на «Add database» (добавить базу данных) в правом нижнем углу, и укажите имя алиаса и путь к локальной базе данных мастера (или реплики):
! путь к базе данных не должен содержать сетевых имен или имени сервера
После успешной регистрации базы данных щелкните на иконку в заголовке базы данных для настройки репликации:
В результате появится диалог конфигурации баз данных мастера или реплики (обратите внимание, что базы данных мастера и реплики должны быть на разных серверах Firebird и FBDataGuard). Если репликация не настроена, этот диалог будет практически пустым:
Рассмотрим следующие варианты настройки репликации.
Асинхронная репликация на мастере
Асинхронная репликация записывает все изменения, сделанные в мастер-базе данных в лог репликации: набор файлов, называемых "сегменты репликации". Сервер реплики получает эти сегменты и применяет их к базе данных реплики.
Для настройки асинхронной репликации вам нужно указать два обязательных параметра:
- log_directory - путь к каталогу с логами (сегментами репликации).
- log_archive_directory - путь к каталогу с архивированными логами (под "архивированными" имеется в виду, что эти логи переданы на сервер реплики)
Третий параметр (в поле "Override log archive command") является опциональным, оставьте его пустым.
Ниже вы можете увидеть, как выглядят примерные настройки:
Перед этим мы зарегистрировали базу данных H:\dbwmaster.fdb, и она является мастер-базой данных в этом примере.
Сегменты репликации будут записаны в каталог C:\Databases\Replication\Log, и после достижения максимального объема, по коммиту, или другому условию, команда архивации по умолчанию "copy $(logpathname) $(archpathname)" (на Windows) будет запущена - и скопирует сегменты репликации в каталог C:\Databases\Replication\LogArch.
Вы можете указать здесь свою собственную команду - напишите ее в поле "Override log archive command", но мы не рекомендуем делать это - не меняйте команду копирования, если вы не понимаете точно, как это работает или должно работать.
Укажите в качестве «Log directory» и «Log archive directory» существующие папки на сервере (если их нет, то их нужно предварительно создать), и нажмите Save для сохранения измененных параметров.
Обратите внимание, что параметры репликации инициализируются при первом соединении с базой данных. Вот почему мы рекомендуем рестартовать службу Firebird (и все соединения в случае Classic) после настройки параметров репликации - такой рестарт обеспечит правильную работу репликации с указанными параметрами.
После запуска репликации после любых действий с базой данных вы увидите файлы сегментов репликации в каталоге, указанном как «Log directory»:
Сегменты репликации ротируются ядром Firebird, и когда отдельный сегмент заполнен, он копируется в папку архива логов. Размер сегмента по умолчанию 16 мегабайт.
Архив логов репликации это набор файлов в хронологическом порядке. Эти файлы должны быть импортированы сервером реплики в базу данных реплики.
Как скопировать сегменты репликации с мастера на реплику?
Прочитайте пожалуйста
это краткое руководство для правильной настройки копирования.
Асинхронная репликация на сервере реплики
После настройки асинхронной репликации на мастере, нам нужно сконфигурировать репликацию на сервере реплики.
База данных реплики должна быть зарегистрирована в HQbird FBDataGuard.
Замечание: база данных должна иметь GUID реплики перед регистрацией (см. выше о GUID реплики)!
Единственный требуемый параметр - путь к каталогу с архивом сегментов репликации, полученных с мастер-сервера:
В приведенном примере сервер репликации настроен получать логи из каталога c:\Database\arch.
Нажмите «Save» и перезапустите службу Firebird.
После рестарта сервер репликации начнет получать и применять к базе данных сегменты репликации из указанного каталога - обратите внимание, что после применения логов к базе данных реплики обработанные сегменты репликации будут удалены.
Замечание: Крайне не рекомендуется хранить сегменты репликации от разных баз данных в одном каталоге! Всегда выделяйте отдельный каталог для сегментов репликации каждой базы данных, как на мастер-сервере, так и на сервере реплики!
Синхронная репликация на мастере
Синхронная репликация записывает изменения в мастер-базе данных напрямую в базу данных реплики. Преимущество синхронной репликации в том, что задержка в данном случае минимальна. Однако недостаток в том, что в случае потери соединения между мастер-сервером и сервером реплики будут пропуски в передаваемых данных.
В этом примере, сервер реплики находтся на сервере с IP адресом192.168.1.40 и по пути D:\Database\dbwrepl.fdb.
На сервере репликации никакая настройка не требуется, за исключением gfix –replica {master-guid} в отношении базы данных реплики, для переключения ее в режим реплики.
Параметры репликации для тестирования
Для проверки HQbird Enterprise на рабочей системе, рекомендуем указать параметр disable_on_error в true.
Это приведет к отключению репликации в случае ошибки, и мастер-сервер продолжит работу без репликации (без сохранения сегментов репликации).
Для перезапуска репликации нужно просмотреть лог репликации для понимания и исправления произошедших ошибок, и перезапустить Firebird снова.
Поэтому, включите опцию мониторинга «Replication log» в HQbird FBDataGuard для отслеживания ошибок и предупреждений лога репликации:
Лицензирование
Одна лицензия HQbird Enterprise включает 1 мастер и 1 реплику. Дополнительные серверы реплики должны быть приобретены отдельно за 50% стоимости от полной лицензии.
Подробнее о редакциях, ценах и способах заказа.
Спрашивайте
Если что-то осталось неясным, или у вас появились вопросы по работе HQbird Enterprise - пишите нам
support@ibase.ru.