DB4 downgrade

Cheng-Jih Chen cjc at cjc.org
Mon Dec 11 06:16:50 EST 2006


Simon Matter wrote:
 >>
 >> Simon Matter wrote:
 >>>> Because of the sudden end-of-life of Fedora Core 4, I'm moving my mail
 >>>> server from FC4 to a CentOS 4.4 box.
 >>>>
 >>>> FC4 uses DB4 4.3.27.
 >>>>
 >>>> CentOS 4.4 uses DB4 4.2.52.
 >>>>
 >>>> What's the best way for me to downgrade the Cyrus DBs for this
 >>>> migration?
 >>> Convert all BerkeleyDBs on the FC4 box to skiplist and then migrate to
 >>> the
 >>> new server/installation. Skiplist doesn't change from version to 
version
 >>> so you don't have that problem anymore.
 >> Sounds good.  It's sufficient just to use the "file" command to see
 >> which of the db files are already skiplist and which are Berkeley DB?
 >
 > Yes, that should be okay. For me it looks like this:
 > [root at xxx imap]# file /var/lib/imap/*.db
 > /var/lib/imap/annotations.db:  Cyrus skiplist DB
 > /var/lib/imap/deliver.db:      Cyrus skiplist DB
 > /var/lib/imap/mailboxes.db:    Cyrus skiplist DB
 > /var/lib/imap/tls_sessions.db: Cyrus skiplist DB
 >
 > One more tip: You may want to remove all data from the db dirs because
 > there may still be some files from the BerkeleyDB and they can lead to
 > error messages, which are in fact not real cyrus errors. On such a
 > migratin I usually do this after rsyncing:
 > rm -rvf /var/lib/imap/db/* /var/lib/imap/db.*

I finally got a window of scheduled downtime to test this, and I'm 
having problems.  Here's what I did:

# /etc/init.d/cyrus-imapd stop
# db_checkpoint -v -1 -h /var/lib/imap/db
# db_recover -v -h /var/lib/imap/db
# rm db/*
# /usr/lib/cyrus-imapd/cvt_cyrusdb /var/lib/imap/deliver.db berkeley 
/var/lib/imap/deliver.db.skip skiplist
# /usr/lib/cyrus-imapd/cvt_cyrusdb /var/lib/imap/tls_sessions.db 
berkeley /var/lib/imap/tls_sessions.db.skip skiplist
# mv deliver.db.skip deliver.db ; mv tls_sessions.db.skip tls_sessions.db
# chown cyrus:mail tls_sessions.db deliver.db
# /etc/init.d/cyrus-imapd start

At this point, the log explodes with messages along the lines of:

Dec 11 06:11:53 ajax imaps[1394]: DBERROR: critical database situation
Dec 11 06:11:53 ajax master[32203]: service imaps pid 1394 in READY 
state: terminated abnormally
Dec 11 06:11:53 ajax master[32203]: service lmtpunix pid 1397 in READY 
state: terminated abnormally
Dec 11 06:11:53 ajax imap[1395]: DBERROR A
                                          : db4
Dec 11 06:11:53 ajax imap[1395]: DBERROR: critical database situation
Dec 11 06:11:53 ajax master[32203]: service imap pid 1395 in READY 
state: terminated abnormally
Dec 11 06:11:53 ajax imap[1399]: DBERROR A
                                          : db4
Dec 11 06:11:53 ajax imap[1399]: DBERROR: critical database situation
Dec 11 06:11:53 ajax imaps[1400]: DBERROR A
                                           : db4
Dec 11 06:11:53 ajax imaps[1400]: DBERROR: critical database situation

Any ideas on why this is going on?

I did notice that /var/lib/imap/rpm/db.cfg.cache has entries along the 
lines of:

CONFIG_DB_DUPLICATE=berkeley
CONFIG_DB_MBOX=skiplist
CONFIG_DB_SEEN=skiplist
CONFIG_DB_SUBS=flat
CONFIG_DB_TLS=berkeley
CONFIG_DB_ANNOTATION=skiplist
CONFIG_DB_SIEVE=2.2.3

Is there someplace I need to tell imapd that deliver and tls_sessions 
are now skiplist?  I don't see anything in /etc/imapd.conf and 
/etc/cyrus.conf.

Thanks.



More information about the Info-cyrus mailing list