Nick,

Believe it or not I did get around to reviewing this last night here
are my comments:

1) I think documentation should start with 2 node scenario and then
move to 3 node.

2) You discuss node failure,  however I feel like network failure is
more common.  In particular
I am currious what takes place with 2 node multi master when the
network goes down between them (split brain)

3) If I understand correctly (and I may not) each node consists of an
h2 database, and a user defined TransportServer.
Essentially the h2 database acts like a client to the
TransportServer.  What happens when the TransportServer goes down but
the database is still accepting clients?

4) If I was to expand upon this to do master-slave replication I would
need to implement two different TransportServers one that runs in the
master database node, and a different one that runs in the slave
database node.  Am I correct?

Overall, I think this is a very good start to adding "real"
replication to H2, and should be considered for inclusion.

Jacob



On Jun 27, 5:13 am, nick betteridge <nick.betteri...@googlemail.com>
wrote:
> Hi
>
> I have written a Transport Server which permits any form of transport to
> used between client and server. The TransportServer can also be set up
> to perform master-master replication with database recovery should a
> node go down, a db update occur and then the failed node restarts.
>
> The default transport is java.net.Socket and java.net.ServerSocket. I
> have also enclosed the transport for grizzly, although there is still a
> bug somewhere - I've run out of time to spend on this so if anyone is
> interested and has time to look into this I would be very grateful. I've
> spent a lot of time with the grizzly guy who is writing grizzy 2 and the
> latest version (in the trunk) is stable for blocking mode.
>
> If you want to add your own transport, look at both the default
> implemention (org.h2.engine.Transport*) and the test_h2_socket and
> test_h2_grizzly (in the enclosed zip), and of course
> org.h2.server.Transport*. Most of it is boilerplate.
>
> The test_h2_socket demonstrates the master-master replication - 3
> servers and 3 clients. Start the servers first, then the clients. You
> will need to change the ip address in the 3 server classes to your local
> address or 127.0.0.1 - my ubuntu has issues with 127.0.0.1 for some
> reason. Update a value -> string = integer in the client.
>
> If I have left anything out of the enclosed documentation then please
> mail me and tell me.
>
> This should be a good starting point for both enhancing what I've
> already done and including other forms of replication, master-slave etc.
>
> It would be great if this could eventually be included in the trunk.
>
> Nick
>
>  h2_transportserver.zip
> 99KViewDownload
>
>  TransportServer.pdf
> 312KViewDownload
>
>  h2.patch
> 55KViewDownload
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to h2-database@googlegroups.com
To unsubscribe from this group, send email to 
h2-database+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to