Thanks.
I finished all my script and tested my daily cold restore script, works very smooth. I'll post my code here ( use it at your own risks

):
1. All the functions/scripts are running from cronjob:
Code:
# Hourly sync redo log from live to standby
0 * * * * /usr/bin/rsync -avr --delete zimbra-primary.mydomain.com:/opt/zimbra/redolog/ /BACKUP/live_redo_log/ 2>1 >>/var/log/zimbra_sync.log
# Daily (Mon-Fri) sync backup and replay redo log
30 1 * * 1-5 /root/daily_sync_live_server.sh 2>1 >>/var/log/zimbra_sync.log
# Daily (Sun) sync backup and replay redo log, it get delayed because we need to wait rsync and restoreation done before apply redo log
0 12 * * 0 /root/daily_sync_live_server.sh 2>1 >>/var/log/zimbra_sync.log
# Weekly(Sat) sync backup and restore Zimbra whole DB and Mailbox
30 10 * * 6 /root/weekly_sync_live_server.sh 2>1 >>/var/log/zimbra_sync.log
2. weekly_sync_live_server.sh ( in /root directory):
Code:
#!/bin/bash
echo "`date`: start weekly syncing backups"
/usr/bin/rsync -avr --delete root@zimbra-primary.mydomain.com:/zimbabackup/ /zmailbackup/
echo "`date`: start restoring backups"
su - zimbra /opt/zimbra/weekly_cold_restore.sh
echo "`date`: restore finished"
And it called /opt/zimbra/weekly_cold_restore.sh:
Code:
#!/bin/bash
zmcontrol stop
rm -rf /opt/zimbra/db/data/*
/opt/zimbra/libexec/zmmyinit
LABEL=`zmrestoreldap -lbs -t /zimbrabackup | sed -n 1p`
zmrestoreldap -t /zimbrabackup -lb $LABEL
zmconvertctl start
zmlocalconfig -f -e zimbra_ldap_password=YOUR_EXIST_LDAP_PASS_ON_LIVE_SERVER
zmmailboxdctl start
zmmailboxdctl stop
cd /tmp; nohup zmrestoreoffline -t /zimbrabackup/ -lb $LABEL -sys -a all -c -br &
The above is just a series commands copied from
Network Edition Disaster Recovery - Zimbra :: Wiki ; Note there missed some return results check script, it is just a very simple one. Hope someone else can found more robust auto restoration script. I ran it once, worked for me.
3. daily_sync_live_server.sh ( in /root directory):
Code:
#!/bin/bash
echo "`date`: start weekly syncing backups"
/usr/bin/rsync -avr --delete root@zimbra-primary.mydomain.com:/zimbabackup/ /zmailbackup/
echo "`date`: start restoring backups"
su - zimbra /opt/zimbra/daily_cold_restore.sh
echo "`date`: restore finished"
And here is /opt/zimbra/daily_cold_restore.sh: (play redo log):
Code:
#!/bin/bash
LABEL=`zmrestoreldap -lbs -t /zimbrabackup | grep incr | sed -n 1p`
zmrestoreldap -lb $LABEL -t /zimbrabackup
for i in `ls -rt /zimbrabackup/sessions/$LABEL/redologs/`
do
echo "Processing /zimbrabackup/sessions/$LABEL/redologs/$i..."
zmplayredo --logfiles /zimbrabackup/sessions/$LABEL/redologs/$i
done 4. In case live server failure, run this script to apply latest redo log then make it live:
/opt/zimbra/replay_redolog_live.sh:
Code:
#!/bin/bash
for i in `ls -rt /BACKUP/live_redo_log/archive/`
do
echo "Processing /BACKUP/live_redo_log/archive/$i..."
zmplayredo --logfiles /BACKUP/live_redo_log/archive/$i
done
zmplayredo --logfiles /BACKUP/live_redo_log/redo.log
zmcontrol stop
zmctrol start Hope it can help some one else which has the similar situation as me. Our current server configuration:
Live server and standby server: Zimbra NE 7.0.1 on CentOS 5.5
Default backup schedule enabled on live server: weekly full backup, daily incremental, keep last 30 days data
Zimbra user accounts: 100~150
Mailstorage size: 200GB~300GB
For us, the rsync one full backup took 18~24 hours, restoration from one full backup took 4 hours; Replaying one day'd redo log took 10~20 minutes.