HQbird Replication
HQbird Enterpriseにおけるネイティブなマスター・スレーブレプリケーション:DMLおよびDDL、トリガー不要、レプリケート対象テーブルにはユニークキーまたはプライマリキーが必要です。Firebird 2.5〜5.0と100%互換 - バックアップ/リストアなしでバイナリを切り替え可能。1ライセンスでマスター1台とレプリカ1台をカバーし、追加レプリカは別途販売されます。
非同期と同期
通常、本番環境では非同期が適切な選択です。
非同期(推奨)
マスターはコミット済みの変更をセグメントファイルにジャーナルし、レプリカはバックグラウンドでそれらを取得して適用します。デフォルトのフラッシュ間隔は90秒(多くの場合15〜30秒に設定)。レプリカはオンラインで再作成可能で、マスターを停止する必要はありません。クラウドや高レイテンシのリンクに適しています。高負荷時には遅延が増加する可能性があります。
同期
マスターはコミット済みの変更をレプリカに直接書き込みます。遅延は約1〜2秒で、安定した約1Gbpsの経路が必要です。レプリカは読み取り専用です(いくつかの注意点あり)。レプリカの再作成にはマスターの停止が必要です。カスタムフェイルオーバー(3ノード以上)、読み取りのオフロード、または非同期との併用に使用します。
インストール
マスターとレプリカにHQbird Server with 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と表示されることを確認します。
データベースを追加:ニックネームとファイルパス(エイリアスではなく) - エイリアスはレプリケートされません。
データベースヘッダーアイコンからレプリケーションを開きます。マスター → 非同期 → 保存を選択します。パラメータが最初の接続時に読み込まれるよう、Firebird(またはすべてのClassic接続)を再起動します。
- ログディレクトリ - 運用セグメント、デフォルトは
${db.default-directory}\ReplicationLog。エンジン管理対象のため、そのままにします。 - ログアーカイブディレクトリ - アーカイブ済みセグメント、デフォルトはデータベースの隣の
${db.path}.LogArch。 - ログアーカイブコマンドの上書き - 空のままにします。
- コミット済みデータの強制フラッシュ - デフォルト90秒。
書き込み直後にログディレクトリにローテーションファイルが表示され、コミット/タイムアウト後にアーカイブセグメントが表示されるはずです。運用セグメントには触れないでください。アーカイブをレプリカにコピーする方法:ネットワーク共有またはFTP/SSH。
ステップ2 - 初期レプリカファイル
HQbird 2018 R2以降では、レプリカデータベースの再初期化により、マスターの隣にemployee30.fdb.17-Apr-2018_142507.4replicaのような名前のコピーが作成されます。または、マスターを停止せずにnbackupを使用することもできます。
ステップ3 - レプリカサーバー
レプリカにレプリカGUIDが設定された後に、FBDataGuardでレプリカを登録します。必須設定はアーカイブ済みセグメントのフォルダです。保存してFirebirdを再起動します。デフォルトはレプリカの隣のフォルダからインポートされ、処理済みセグメントは削除されます。異なるデータベースのアーカイブを1つのフォルダに混在させないでください。
手順 - 同期レプリケーション
- Firebird を停止します。
- マスターファイルをコピーし、レプリカモードに切り替えて、レプリカサーバーにコピーします。
- FBDataGuard でレプリカサーバーを設定します。
- マスターの前にレプリカを起動します。
- マスターを設定し、その後マスターを起動します。
非同期よりもダウンタイムが長くなります。レプリカはマスターが起動する前にオンラインになっている必要があります。リモートレプリカの例: サーバー replicaserver、パス /data/test2.fdb。レプリカでは、そのコピーに加えて gfix -replica {master-guid} を実行するだけで十分です。
本番システムでのテスト
disable_on_error を true に設定すると、レプリケーションエラーが発生した場合にレプリケーションがオフになり、マスターはサービスを継続します。エラーを修正した後、クリーンなログから再初期化します。FBDataGuard で Replication log ジョブを有効にして、エラーと警告を確認します。
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 から取得したマスターの一意の ID です。これがない場合は、HQbird の Firebird バイナリで一度接続し、gstat -h を再度実行してください。
gfix disk:\path\mydatabase.fdb -replica {guid} -user SYSDBA -pass masterkey
gfix disk:\path\mydatabase.fdb -replica {} -user SYSDBA -pass masterkey
空の {} はファイルを通常(読み書き)モードに戻します。レプリカでは読み取り専用の作業(SELECT)のみ実行できます。データやメタデータは変更しないでください。