HQbird Replication
HQbird Enterprise 中的原生主从复制:支持 DML 和 DDL,无需触发器,复制表需有唯一键或主键。100% 兼容 Firebird 2.5-5.0 -- 无需备份/恢复即可切换二进制文件。一份许可证涵盖一个主库和一个副本;额外副本需单独购买。
异步与同步
异步通常是生产环境的正确选择。
异步(推荐)
主库将已提交更改记录到段文件中;副本在后台拉取并应用这些更改。默认刷新时间为 90 秒(通常设置为 15-30 秒)。副本可以在线重建;无需停止主库即可启动。适用于云环境或高延迟链路。在高负载下延迟可能会增加。
同步
主库将已提交更改直接写入副本。延迟约 1-2 秒;需要稳定的约 1 Gbps 路径。副本为只读(有注意事项)。重建副本需要停止主库。用于自定义故障转移(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。默认值从副本旁边的文件夹导入;已处理的段会被删除。不要将不同数据库的归档混放在一个文件夹中。
步骤 - 同步复制
- 停止 Firebird。
- 复制主文件,将其切换为副本模式,复制到副本服务器。
- 在 FBDataGuard 中配置副本服务器。
- 在主服务器之前启动副本。
- 配置主服务器,然后启动主服务器。
比异步复制需要更长的停机时间:副本必须在主服务器启动之前在线。远程副本示例:服务器 replicaserver,路径 /data/test2.fdb。在副本上,除了复制之外,运行 gfix -replica {master-guid} 就足够了。
在生产系统上测试
将 disable_on_error 设置为 true,这样复制错误会关闭复制,而主服务器继续提供服务。修复错误后,从干净的日志重新初始化。在 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 是主服务器的唯一 ID,来自 gstat -h。如果缺失,请使用 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);不要更改数据或元数据。