sync_client: Fallback on master

Ismaël Tanguy ismael.tanguy at univ-brest.fr
Fri Jul 3 04:25:17 EDT 2020


Hello,

During the upgrade of a master backend server (~15k mailboxes) from 
Centos7 to Centos8, we fail over on a replica.
Before the failover, we run a last time sync_client -r, to flush 
entirely sync log.

Everything went fine, except that the replica was not allowed to 
mupdatepush (ctl_mboxlist -m) and all the mailboxes dissapear in the 
murder mailboxes.db
That has been fixed as soon as we saw this error. Mailboxes.db has been 
repopulated.

Then, when the backend cames up, we fall back on it and run sync_client 
from the replica to the master.
I think now that was not the good way, because new mails start to arrive 
on the master while replication occured from the replica.

Replica's sync log size is as big as yesterday (the failover day) = 23M 
and around 1 million lines (mainly MAILBOX and APPEND commands).

replica /var/log/maillog reports various errors :


Jul  3 09:37:25 store-1-replicat-etudiant cyrus/sync_client[4000]: 
UNMAILBOX received NO response: Unknown error
Jul  3 09:37:25 store-1-replicat-etudiant cyrus/sync_client[4000]: 
sync_folder_delete(): failed: user.e21901967.Bibli-Culture 'The remote 
Server(s) denied the operation'
Jul  3 09:37:25 store-1-replicat-etudiant cyrus/sync_client[4000]: 
IOERROR: do_user_main: The remote Server(s) denied the operation for 
e21901967 to [no channel] (store-xxxxx)
Jul  3 09:37:25 store-1-replicat-etudiant cyrus/sync_client[4000]: Error 
in do_sync(): bailing out! The remote Server(s) denied the operation

Jul  3 09:42:45 store-1-replicat-etudiant cyrus/sync_client[4045]: 
SYNCNOTICE: highestmodseq higher on replica user.e21603781, updating 
8692 => 8694
Jul  3 09:42:45 store-1-replicat-etudiant cyrus/sync_client[4045]: 
SYNCNOTICE: record mismatch with replica: user.e21603781 more recent on 
replica


Jul  3 09:42:45 store-1-replicat-etudiant cyrus/sync_client[4045]: 
SYNCNOTICE: master uid:4340 modseq:8692 last_updated:1593736158 
internaldate:1593736091 flags:(\Seen) cid:0000000000000000
Jul  3 09:42:45 store-1-replicat-etudiant cyrus/sync_client[4045]: 
SYNCNOTICE: replica uid:4340 modseq:8693 last_updated:1593762055 
internaldate:1593736091 flags:(\Seen) cid:0000000000000000

Jul  3 09:43:03 store-1-replicat-etudiant cyrus/sync_client[4045]: 
MAILBOX received NO response: IMAP_SYNC_CHECKSUM Checksum Failure
Jul  3 09:43:03 store-1-replicat-etudiant cyrus/sync_client[4045]: CRC 
failure on sync for user.e21913149, trying full update


Therefore, there are 24Go of additionals mails on the master IMAP spool, 
compared to the replica.

What's is the best way to empty the replica sync_log?
I would like to be sure that every mail arrived on the replica during 
the failover has been copied on the master.
I could use external tool like imapsync, maybe Cyrus has one that 
permits that.

Thank you,

--
Ismaël Tanguy



More information about the Info-cyrus mailing list