4

我正在研究将 Firebird 用于项目的可能性。

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

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

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

任何“陷阱”、建议、提示等?

谢谢!

4

2 回答 2

3

Firebird Conference 2009有一场关于复制的会议

霍尔格克莱姆特

* 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 版本)的情况下也是如此。

于 2009-10-26T12:07:02.907 回答
3

在过去的 2 年里,我们一直在使用DRBD/Heartbeat/Pacemaker解决方案来解决完全相同的问题。保持 Firebird 数据库正常运行和故障转移。设置实际上非常简单,我有一些建议可以让您抢先一步。所以这些只是建议......

  • 创建一个drbd分区,对其进行格式化并将其挂载到/data(当然使用起搏器)
  • 将您的aliases.conf放入drbd 分区,这样您就不必每次更改 aliases.conf 两次。将 aliases.conf 文件复制到 /data 并将其链接到两个节点上的 /etc/firebird/2.1/aliases.conf

在 Primary/Secondary 设置中使用 Drbd/Pacemaker的缺点是,一旦主节点死亡,客户端就会断开连接,直到辅助节点启动。将不得不重新连接。我还没有真正找到另一种解决方法,尽管 firebird 客户端应该允许连接超时,但它从未真正与我们的应用程序一起使用(也许我们使用的应用程序或库并没有真正使用 firebird 连接超时)。

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

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

于 2012-03-20T10:48:23.037 回答