Based on your idea that we should implement the 'consistency layer' in dbmail, I propose an approach from another angle: consider each machine with mta/dbmail/database to be completely monolithic. The machines do not talk to one another except perhaps by an heartbeat/IP failover. The databases are not aware of one another in any way whatsoever.
Synchronize with imapsync. http://freshmeat.net/projects/imapsync/ Aaron On Sun, 30 Mar 2003, lou k wrote: > Aaron Stone writes: > > > An interesting front end is SQL Relay, http://firstworks.com/ > > > > My thinking on the database redundancy issue is a compromise with the > > full-failover and the write-master+read-slaves ideas; There's a main > > server with read/write (the master) and a slave with read only. > > Geesh why everyone want to stop one of the servers from operating in normal > mode to a read-only mode. I personally cant accept the fact however, > i`m working further on this issue, for now i have a simple algorithm which > solves the issue with the unique ids, negotiates the backend grouping and > makes it more generic in its structure, since obviously this can't be done > on the db layer thanks to the primitive[1] replication in mysql which doesnt > do any merging(not any of i`m aware of) and is quite scared when it meets > few ids with the same values that it makes it stop the whole replication > process, which IMHO is absolutely unacceptable. The problems in PgSQL are a > bit different since it doesnt have native replication ready for productional > use, but it`s in development, and it`s doing quite well according to my > research. > Now we have an issue which is obviously called 'data sharing' since there is > _a_ difference between clustering db servers and having a backup in any way > or redundancy (that was the idea from the begining). If we`re doing > clustering the issue is not only one but it will create more sub-issues on > its layer. The term redundacy is quite different, the simplest one is 'if > server1 is down server2 will take over and continue the operations without a > downtime', and personally that`s quite enuf for me, since there wont be any > downtime. But if we add more servers we need more sofisticated and complex > approach than the first one, we need consistency, the consistency itself is > so vast in terms of communication and data share[2], since we`re aware of > what might and might not happen, but assuming that something is, is not the > right way of creating something generic and therefor portable, because > simply the false postivives on the network are growing, more members, more > participants..etc. > > What i want to say, is something that`ve already said - It`s a dbmail's > problem, because we cannot force the db devels to get to the place where we > want, and since that wont be in the nearest months or whatever bit of time, > i prefer solving the problem on dbmail layer. > > > The primary and secondary MX idea is a very good one, and when the > > primary > > goes down, the secondary will receive the mail but not be allowed to > > insert it. > > Incoming messages will queue up between postfix and dbmail > > (must be tuned not to attempt immediate retries, though) and once the > > master is alive, will be delivered. In the mean time, everyone can still > > read their mail from the slave (but no flagging, deleting or moving). > > That was my idea in the begining but i want both of my databases to be able > to share and therefor modify the data whenever they want in way that wont > cause any collisions. However we are in power to minimize the possibility of > any collisions and i suppose that`s the first thing we should do before > everything failes. Somehow I personally dont accept downtime vs wrongly > inserted message[2]. > > I`m happy with Jose`s example about the whole stuff, but he`s taking it too > far in the future, because that is the first step we take on this road, and > that`s not the last, since it will evolve in something more sofisticated in > aspect of consistency, redundancy and in general distributed systems, grids, > blahblah. > > [1] primitive in terms of no grouping. no failover. no decent multimaster > replication nor any advanced data merging abilities. > [2] client1 gets client2 message, obviously there is a workaround since we > can control how the message is inserted and where is inserted.. that`s not > an issue in my design though, nor the random subscribers we might get in > Jose`s example. > > I`ll continue to work on it, if anyone in any way is interested, ask. > > cheers, > -lou > > > > > > > On Thu, 27 Mar 2003, Roel Rozendaal - IC&S wrote: > > > >> Hi lou, > >> > >> The problem here is that the database consistency is not guaranteed - > >> the databases are not synchronized so behaviour seems pretty undefined > >> when for example the imap daemon connects to another database in the > >> mid of a session. The unique-id's and message_idnr's are no longer > >> unique nor will the message_idnr guarantee the correct order of > >> delivery; some messages/folders will suddenly be no longer available > >> when a system fails and some others again will no longer be available > >> as the first system is up again. > >> > >> We are still looking for some good replication funcionality but it > >> seems that the logics for such failover system should be a database > >> issue and not a dbmail one - the ultimate system would allow dbmail to > >> connect to some front-end (preferrably local so network failure is > >> shielded from dbmail) SQL interface which would implement all the > >> failover functionality we desire: different groups of replicating > >> clusters spread out over the world :) > >> > >> regards roel > >> > >> > >> lou heeft op woensdag, 26 maa 2003 om 20:57 (Europe/Amsterdam) het > >> volgende geschreven: > >> > >> > Ello group{s}, > >> > > >> > some time ago i mentioned something about having a fallback database in > >> > case the first one doesnt respond. I found it really usefull in the > >> > following scenario. > >> > I have domain.com and two MX records for it mx1.domain.com(5) and > >> > mx2.domain.com(10), > >> > and i`m using dbmail, let say the db on mx1 is gone, what happens, mx2 > >> > wont help me, but > >> > with this patch if dbmail service on mx1 cant connect to it`s primary > >> > db it`ll to the > >> > secondary at mx2, where db1 and db2 are quite aware with it`s data in > >> > sense of > >> > replication. > >> > > >> > kinda > >> > if(conn1 == fails){ tellus; conn2; if(conn2 == fails) { tellus; return > >> > _err; } } > >> > of course with each connect N it`ll try to connect to db1 before > >> > falling back to db2; > >> > > >> > ligthly tested with pgsql/mysql agains dbmail-1.1(from > >> > http://www.dbmai.org), it`s quite > >> > simple, though i cant say how it`ll work on your mailservers. > >> > > >> > > >> > let me know if i did something wrong. sometime (when i find it) i`ll > >> > try to change the > >> > stuff to use more than 2 dbs and not to be so static. Hope Eelco, Roel > >> > would be keen on > >> > impl something like this permanently? > >> > (patch attached) > >> > > >> > > >> > cheers > >> > -lou > >> > > >> > -- > >> > > >> > Lou Kamenov AEYE R&D [EMAIL PROTECTED] > >> > FreeBSD BGUG http://www.freebsd-bg.org [EMAIL PROTECTED] > >> > Secureroot UK http://secureroot.org.uk [EMAIL PROTECTED] > >> > Key Fingerprint - 936F F64A AD50 2D27 07E7 6629 F493 95AE A297 084A > >> > One advantage of talking to yourself is that you know at least > >> > somebody's listening. - Franklin P. Jones > >> > <dbmail-fallback.patch.gz> > >> > >> _________________________ > >> R.A. Rozendaal > >> ICT Manager > >> IC&S > >> T: +31 30 2322878 > >> F: +31 30 2322305 > >> www.ic-s.nl > >> > >> _______________________________________________ > >> Dbmail-dev mailing list > >> Dbmail-dev@dbmail.org > >> http://twister.fastxs.net/mailman/listinfo/dbmail-dev > >> > > > > _______________________________________________ > > Dbmail-dev mailing list > > Dbmail-dev@dbmail.org > > http://twister.fastxs.net/mailman/listinfo/dbmail-dev > > _______________________________________________ > Dbmail mailing list > Dbmail@dbmail.org > https://mailman.fastxs.nl/mailman/listinfo/dbmail >