此页面为机器翻译。请阅读英文原文。 English

HQbird Enterprise 中的原生主从复制:支持 DML 和 DDL,无需触发器,复制表需有唯一键或主键。100% 兼容 Firebird 2.5-5.0 -- 无需备份/恢复即可切换二进制文件。一份许可证涵盖一个主库和一个副本;额外副本需单独购买。

异步与同步

异步通常是生产环境的正确选择。

异步(推荐)

主库将已提交更改记录到段文件中;副本在后台拉取并应用这些更改。默认刷新时间为 90 秒(通常设置为 15-30 秒)。副本可以在线重建;无需停止主库即可启动。适用于云环境或高延迟链路。在高负载下延迟可能会增加。

同步

主库将已提交更改直接写入副本。延迟约 1-2 秒;需要稳定的约 1 Gbps 路径。副本为只读(有注意事项)。重建副本需要停止主库。用于自定义故障转移(3 个以上节点)、卸载读取,或与异步混合使用。

异步 Firebird 复制:从主库到副本的日志段
异步:段存储在磁盘上,在后台应用。
同步 Firebird 复制:主库直接写入副本
同步:在实时连接上按提交批量传输。

安装

在主库和副本上安装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

步骤 -- 异步复制

  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 控制台准备添加数据库进行复制

添加数据库:昵称加上文件路径,而不是别名 -- 别名不会复制。

添加数据库对话框,使用显式文件路径

从数据库头部图标打开复制。选择主库异步 → 保存。重启 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。
  2. 复制主文件,将其切换为副本模式,复制到副本服务器。
  3. 在 FBDataGuard 中配置副本服务器。
  4. 在主服务器之前启动副本。
  5. 配置主服务器,然后启动主服务器。

比异步复制需要更长的停机时间:副本必须在主服务器启动之前在线。远程副本示例:服务器 replicaserver,路径 /data/test2.fdb。在副本上,除了复制之外,运行 gfix -replica {master-guid} 就足够了。

同步复制配置

在生产系统上测试

disable_on_error 设置为 true,这样复制错误会关闭复制,而主服务器继续提供服务。修复错误后,从干净的日志重新初始化。在 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 是主服务器的唯一 ID,来自 gstat -h。如果缺失,请使用 HQbird 的 Firebird 二进制文件连接一次,然后再次运行 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);不要更改数据或元数据。