Question

I am researching the possibility of using Firebird for a project.

However, one potential problem is replication and failover, or rather, lack of a (subjective) "good" solution. There are several potential solutions listed in the Firebird FAQ but they are either 1) Windows-centric; 2) horribly outdated; 3) commerical; or 4) not full-featured.

The only potential option I see is FIBRE and that looks 1) immature; 2) potentially dead; and 3) not full-featured.

I've learned about DRBD and Heartbeat and these solutions look promising. I am looking for your feedback should you already have 1) setup a replicated Firebird configuration; and/or 2) used DRBD with Firebird.

Any "gotchas", recommendations, tips, etc.?

Thanks!

Was it helpful?

Solution

There is one session about replication in 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

your own replication system in a Firebird database. Based on triggers and simple scripts, your can create a live backup system. The architecture allows master-master, master-slave, multi-master, online and offline replication. The replicated Firebird cluster can be used by any client without interuption, also in the case of partial hardware failures, planned hardware and software maintenance operations, for example the switch to a new Firebird version.

OTHER TIPS

We have been using DRBD/Heartbeat/Pacemaker Solution for the last 2 years for exactly the same problem. To keep Firebird databases up and running and failover. The setup is actually quite easy and I have a few suggestions that I will give you to get a head start. So these are just suggestions ...

  • create a drbd partition, format it and mount it to /data (with pacemaker of course)
  • put your aliases.conf to the drbd partion, so you won't have to change the aliases.conf twice everytime you make a change to it. Copy the aliases.conf file to /data and link it to /etc/firebird/2.1/aliases.conf on both nodes

The downside of using Drbd/Pacemaker in a Primary/Secondary setup is that the clients will loose the connection as soon as the primary node dies and until the secondary node is up. The will have to reconnect. I haven't really found another way arround that, although the firebird client should allow a connection timeout it never really worked with our applications (maybe the applications or the libraries we use don't really use the firebird connection timeout).

As for database replication, I am afraid you have to go the way as Hugues Van Landeghem decribed or quoted it. We developed such an application, that works with triggers. So a new line is added to a table, a trigger copies the key of the entry to another table which is constantly read by an application which grabs that entry and inserts it to another database. Quite ugly but it works just fine! I personally think Firebird should invest some time in having their own datbase replications system...they are really far behind...

Hope my information helped you a little bit. I have further questions feel free to contact me or visit my site @ gefoo.org

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top