migrating Cyrus IMAPd from i386 to amd64 system
Jukka Salmi
j+asg at 2010.salmi.ch
Fri Jul 2 14:21:18 EDT 2010
Jukka Salmi --> info-cyrus (2010-06-25 02:30:49 +0200):
> Hi
>
> I'm currently running Cyrus IMAPd 2.2.13p1 on NetBSD/i386 without any
> problems. During the next few days I need to move the users' mailboxes
> to a NetBSD/amd64 system which will run Cyrus IMAPd 2.3.16. Some hints
> about this would be appreciated.
>
> The cleanest way would probably be to get Cyrus IMAPd running on the new
> system and then to copy the mailboxes via IMAP (using imapsync(1) or
> similar); but since the upstream on the old system is very slow I'd like
> to avoid this approach if possible.
>
> Since I can afford some hours of mail system downtime I'd prefer to copy
> over a compressed archive containing all the mailboxes, extract it on
> the new system and recursively run reconstruct(8) for all mailboxes;
> then I'd probably copy over the contents of $configdirectory/user/ and
> start Cyrus IMAPd. Does this make sense? And what data will I be
> missing? ;-)
>
> Some basic questions:
>
> - Is Cyrus on amd64 able to read skiplist files created by Cyrus on
> i386? (If not, I'd probably have to use cvt_cyrusdb(8) to dump and
> restore the relevant files.)
>
> - What about the cyrus.{cache,header,index,squat} files? Can I expect
> Cyrus on amd64 to be able to read them just fine? (This seems not to
> be that important since those files are easily recreated IIUC.)
>
>
> TIA, Jukka
Thanks for all the hints I got on this.
Just copying $configdirectory, $partition-default and $sievedir from the
old server to the new one and starting Cyrus there did -- as expected --
not work because of Berkeley DB:
ctl_cyrusdb[23411]: DBERROR db4: Build signature doesn't match environment
I didn't even try to fix the problem by dumping and restoreing the DB,
but instead removed the copied directories again and did the following:
- added users to SASLdb (saslpasswd2 -c ...)
- started cyrus (init script created directories and called mkimap)
- created users' INBOXes (cyradm)
- stopped cyrus
- copied $configdirectory/user, $partition-default/user and $sievedir
from old server
- started cyrus
- for user in $(ls $partition-default/user); do
reconstruct -f user.$user
done
- manually adjusted server and mailbox annotations, user quota and
ACLs (cyradm)
This resulted in a working Cyrus IMAPd 2.3.16 on the new amd64 system.
However, after a while I started to see the following errors in the
logs:
ctl_cyrusdb[2085]: DBERROR: error listing log files: No such file or directory
ctl_cyrusdb[2085]: DBERROR: archive /var/imap/db: cyrusdb error
This seems to be triggered by the `checkpoint' entry from the EVENTS
section of cyrus.conf:
EVENTS {
# this is required
checkpoint cmd="ctl_cyrusdb -c" period=30
However, running `ctl_cyrusdb -c' manually (as user cyrus...) worked
fine
ctl_cyrusdb[3296]: checkpointing cyrus databases
ctl_cyrusdb[3296]: done checkpointing cyrus databases
and since then, I haven't seen the problem occur anymore. Hmm...
Regards, Jukka
--
This email fills a much-needed gap in the archives.
More information about the Info-cyrus
mailing list