我正在研究在项目中使用 Firebird 的可能性。

然而,一个潜在的问题是复制和故障转移,或者更确切地说,缺乏一种(主观的)“好的”解决方案。Firebird 常见问题解答中列出了几种潜在的解决方案,但它们要么 1) 以 Windows 为中心;要么2)非常过时;3)商业;或 4) 功能不全。

我看到的唯一潜在选择是纤维,它看起来 1) 不成熟;2)可能死亡;3)功能不全。

我了解了 DRBD 和 Heartbeat,这些解决方案看起来很有前途。我正在寻找您的反馈,如果您已经有 1) 设置复制的 Firebird 配置;和/或 2) 将 DRBD 与 Firebird 一起使用。

有什么“陷阱”、建议、技巧等吗?

谢谢!

有帮助吗?

解决方案

Firebird Conference 2009 中有一个关于复制的会话

  

Holger Klemt

* Firebird Replicated Part 1
* Firebird Replicated Part 2
      o In this two sessions you will see how easy it is to implement
     

你自己的复制系统   Firebird数据库。基于触发器   和简单的脚本,你可以创建一个   实时备份系统。架构   允许主 - 主,主从,   多主,在线和离线   复制。复制的Firebird   任何客户端都可以使用集群   没有中断,也是在这种情况下   计划的部分硬件故障   硬件和软件维护   操作,例如切换到   一个新的Firebird版本。

其他提示

我们一直在使用 DRBD/心跳/起搏器 过去两年完全相同问题的解决方案。保持 Firebird 数据库正常运行和故障转移。设置实际上非常简单,我有一些建议可以帮助您抢占先机。所以这些只是建议......

  • 创建一个 德鲁布德 分区,格式化并挂载到 /数据 (当然还有心脏起搏器)
  • 把你的 别名.confDRBD分区, ,因此您不必每次更改 aliases.conf 时都更改两次。将 aliases.conf 文件复制到 /data 并将其链接到两个节点上的 /etc/firebird/2.1/aliases.conf

缺点 在主要/次要设置中使用 Drbd/Pacemaker 的原因是客户端 将失去连接 一旦 主节点死亡 直到辅助节点启动。必须重新连接。我还没有真正找到另一种方法来解决这个问题,尽管 firebird 客户端应该允许连接超时,但它从未真正与我们的应用程序一起工作(也许我们使用的应用程序或库并没有真正使用 firebird 连接超时)。

至于数据库复制,恐怕你必须走Hugues Van Landeghem描述或引用的路。我们开发了这样一个与触发器一起使用的应用程序。因此,将新行添加到表中,触发器将条目的键复制到另一个表,该表由应用程序不断读取,该应用程序获取该条目并将其插入到另一个数据库中。相当丑陋,但效果很好!我个人认为 Firebird 应该投入一些时间拥有自己的数据库复制系统......他们真的远远落后......

希望我的信息对你有一点点帮助。我还有其他问题请随时与我联系或访问我的网站@ gefoo.org

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top