Re: What are the conditions for the replication to work?

Michael Menge <[email protected]>
Newsgroups gmane.mail.imap.cyrus
Message-ID <20211109101108.Horde.uqPGDA_qycQbvO_SXvebIEq@webmail.uni-tuebingen.de>
Hi,

Quoting [email protected]:

> Hello,
>
> I'd like first to thank the authors of Cyrus IMAP which is a great  
> software. I'm designing an architecture of mail servers using it and  
> I have questions regarding replication.
>
> I have seen somewhere in the documentation that servers were usually  
> deployed in pairs with replication between them. I suppose then that  
> there is a master and a slave. What is not clear however is how to  
> ensure that the state is kept equal between the two servers.
>

The recommended way is to use rolling replication. This will create
a log-File {configdirectory}/sync/<channel>/log where different
channels allow to have multiple replicas, backup servers or update
search indexes

The log-File does not contain the changes, but information where
something has changed. The sync_client in rolling replication will
move the file, process it and will repeat. In normal Operation the
file will be processed faster than the changes occure.


> In particular, if the master server goes down, and the slave server  
> is used instead, the two servers will become out of sync. The master  
> might have some changes that it did not had time to replicate to the  
> slave, and the slave in between become a temporary master and had  
> new changes as well. How to reconcile this?
>

There are some changes that cyrus can detect and fix if you replicate form
the temporary master to the old master (e.g. new/deleted Mails)
Other changes cyrus is not able to resolve, and if you do nothing the version
of the temporary will prevail (e.g. subscribed/unsubscribed mailboxes)

There is some development to allow cyrus to resolve these changes.

If you are concerned you can read the sync log to know what might be missing.
For practical purpose I copy the sync-log from the old-master to the temporary
master and run the sync_client with the log. This will ensure that all mails
delivered to the old master will be transfered. And that both systems  
are in sync
after the temporary master has cathed up with the reolling replication

PS.: before you allow users access to the new master you must enable  
rolling replication
to log all changes


> Can replication be set up from the slave back to the master? What  
> are the risks in such a scenario (what if there are conflicting  
> changes)? Is it possible to setup incremental synchronization in  
> both directions, can the protocol cope with that?

Theoretical you can configure replication on both sides. But as  
mentioned above
for some kinds of replicated data cyrus will be unable to detect which  
side has
the more recent version. So conflicting changes would probably lead to  
unpredictable,
and inconsistent changes e.g. bothe sides rename a mailbox to different name
(rename mailbox, unsubscribe old mailbox, subscribe new mailbox) if  
the rename from Server A
and the subscribe from server B survives

If you want to use bothe servers i would recommend to partition your  
users among multiple servers
and run multiple insances (one master, one replica) on each server.
See   
https://cyrus.topicbox.com/groups/info/T7a361715be957813-Mf88daa8db4a1841a96dea3e9/cyrus-murder-documentation



--------------------------------------------------------------------------------
Michael Menge                          Tel.: (49) 7071 / 29-70316
Universität Tübingen                   Fax.: (49) 7071 / 29-5912
Zentrum für Datenverarbeitung          mail:  
[email protected]
Wächterstraße 76
72074 Tübingen


------------------------------------------
Cyrus: Info
Permalink: https://cyrus.topicbox.com/groups/info/Tc5837f7dfaad94a9-Mc9010af069a5789a4dbe974d
Delivery options: https://cyrus.topicbox.com/groups/info/subscription
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.