HQbird Replication
Natywna replikacja master-slave w HQbird Enterprise: DML i DDL, bez triggerów, unikalne lub główne klucze na replikowanych tabelach. W 100% zgodna z Firebird 2.5-5.0 - zmiana binariów bez backupu/restore. Jedna licencja obejmuje jednego mastera i jedną replikę; dodatkowe repliki są sprzedawane osobno.
Asynchroniczna vs synchroniczna
Async jest zwykle właściwym wyborem produkcyjnym.
Asynchroniczna (zalecana)
Master zapisuje zatwierdzone zmiany do plików segmentów; repliki pobierają je i stosują w tle. Domyślny flush to 90 sekund (często ustawiany na 15-30). Replika może być odtworzona online; nie trzeba zatrzymywać mastera, aby rozpocząć. Dobra do chmury lub łączy o wysokim opóźnieniu. Opóźnienie może rosnąć przy dużym obciążeniu.
Synchroniczna
Master zapisuje zatwierdzone zmiany bezpośrednio do replik. Opóźnienie ~1-2 sekundy; wymaga stabilnego łącza ~1 Gbps. Replika jest tylko do odczytu (z pewnymi zastrzeżeniami). Odtworzenie repliki wymaga zatrzymania mastera. Użyj do niestandardowego failover (3+ węzły), odciążania odczytów lub w połączeniu z async.
Instalacja
Zainstaluj HQbird Server z Firebird na masterze i replice. Windows: HQbirdServer2024.exe (2.5-5.0). Narzędzia administracyjne są opcjonalne dla replikacji. Linux: przewodnik instalacji. Zarejestruj się z licencją próbną lub pełną. Podręcznik użytkownika §2 obejmuje konfigurację serwera.
Firebird 2.5: HQbird instaluje SuperClassic. Jeśli nagłówek bazy danych ma dużą liczbę buforów stron, wydajność może ucierpieć. Ustaw bufory na 0, aby firebird.conf miał pierwszeństwo:
gfix -buff 0 -user SYSDBA -pass masterkey dysk:\ścieżka\baza.fdb
Kroki - replikacja asynchroniczna
- Skonfiguruj bazę danych jako master.
- Utwórz plik repliki (
nbackuplub „Reinitialize replica database”). - Skonfiguruj serwer repliki.
Krok 1 - Master
Otwórz http://127.0.0.1:8082 (port jest konfigurowalny). Zaloguj się admin / silne hasło. Potwierdź, że widget Aktywny serwer pokazuje Firebird 2.5/3.0/4.0/5.0 HQbird.
Dodaj bazę danych: pseudonim plus ścieżka pliku, nie alias - aliasy nie są replikowane.
Otwórz replikację z ikony nagłówka bazy danych. Wybierz Master → Asynchroniczna → Zapisz. Uruchom ponownie Firebird (lub wszystkie połączenia Classic), aby parametry załadowały się przy pierwszym połączeniu.
- Katalog dziennika - segmenty operacyjne, domyślnie
${db.default-directory}\ReplicationLog. Zarządzany przez silnik; zostaw go. - Katalog archiwum dziennika - zarchiwizowane segmenty, domyślnie
${db.path}.LogArchobok bazy danych. - Zastąp polecenie archiwizacji dziennika - pozostaw puste.
- Wymuś flush zatwierdzonych danych - domyślnie 90 sekund.
Powinieneś zobaczyć rotujące pliki w katalogu dziennika natychmiast po zapisach, a następnie zarchiwizowane segmenty po zatwierdzeniu/przekroczeniu limitu czasu. Nie dotykaj segmentów operacyjnych. Kopiowanie archiwów do repliki: udział sieciowy lub FTP/SSH.
Krok 2 - Początkowy plik repliki
Od HQbird 2018 R2, Reinitialize replica database tworzy kopię obok mastera, nazwaną jak employee30.fdb.17-Apr-2018_142507.4replica. Lub użyj nbackup bez zatrzymywania mastera.
Krok 3 - Serwer repliki
Zarejestruj replikę w FBDataGuard po tym, jak otrzyma GUID repliki. Wymagane ustawienie to folder zarchiwizowanych segmentów. Zapisz i uruchom ponownie Firebird. Wartości domyślne są importowane z folderu obok repliki; przetworzone segmenty są usuwane. Nie mieszaj archiwów z różnych baz danych w jednym folderze.
Kroki - replikacja synchroniczna
- Zatrzymaj Firebird.
- Skopiuj plik mastera, przełącz go w tryb repliki, skopiuj na serwery replik.
- Skonfiguruj serwery replik w FBDataGuard.
- Uruchom repliki przed masterem.
- Skonfiguruj mastera, a następnie uruchom mastera.
Więcej przestojów niż async: replika musi być online, zanim master się uruchomi. Przykład zdalnej repliki: serwer replicaserver, ścieżka /data/test2.fdb. Na replice, gfix -replica {master-guid} wystarczy oprócz tej kopii.
Testowanie na systemie produkcyjnym
Ustaw disable_on_error na true, aby błąd replikacji wyłączył replikację, a master nadal działał. Zainicjuj ponownie z czystego dziennika po naprawieniu błędu. Włącz zadanie Replication log w FBDataGuard dla błędów i ostrzeżeń.
Utwórz kopię repliki za pomocą nbackup
Działa online dla async (i dodatkowych replik) bez zatrzymywania mastera. Lub zatrzymaj Firebird i skopiuj plik.
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 to unikalny identyfikator mastera z gstat -h. Jeśli go brakuje, połącz się raz z binariami Firebird HQbird i uruchom gstat -h ponownie.
gfix dysk:\ścieżka\mojabaza.fdb -replica {guid} -user SYSDBA -pass masterkey
gfix dysk:\ścieżka\mojabaza.fdb -replica {} -user SYSDBA -pass masterkey
Puste {} przywraca plik do normalnego trybu (odczyt-zapis). Na replice możesz wykonywać prace tylko do odczytu (SELECT); nie zmieniaj danych ani metadanych.