Live Backup / Hot Backup untuk Zimbra Mail Server

replikasi

Salah satu masalah utama yang dihadapi selama mengelola email server adalah kemampuan untuk melakukan hot/live backup, proses backup yang dijalankan pada saat Zimbra sedang aktif.

Zimbra Mail Server versi commercial memiliki kemampuan live backup secara default. Hal ini merupakan salah satu perbedaan/feature yang tidak disertakan pada versi open source selain support online dari Zimbra dan kemampuan akses BlackBerry.

Meski demikian, versi open source bukan tanpa pilihan backup sama sekali :-)

Berbagai script backup yang dapat diaplikasikan pada Zimbra Mail Server versi Open Source biasanya membutuhkan proses penghentian  service Zimbra untuk beberapa saat. Kesemuanya dilakukan secara otomatis dan biasanya menggunakan fasilitas rsync yang mampu menyalin data ukuran besar secara cepat.

Saya pribadi, setelah mencoba berbagai skenario akhirnya memutuskan untuk menempatkan Zimbra Mail Server didalam  sistem virtual semacam VMWare atau VirtualBox. Cara ini jauh lebih aman dan lebih mudah pengelolaannya dan satu hal yang menyenangkan, Zimbra Mail Server yang berjalan didalam VirtualBox openSUSE 11.1 saya bisa dibackup secara live. Hal ini bisa terjadi karena yang dibackup bukan Zimbra secara sistem melainkan image dari sistem/harddisk virtual.

Konsep ini semestinya bukan hanya dapat diterapkan di openSUSE/SLES melainkan juga pada distro lain seperti Ubuntu, Red Hat, Centos, Fedora maupun Debian.

Kemampuan backup disaat sedang aktif ini memberikan banyak manfaat, misalnya kemudahan backup dan restore serta proses penyalinan data yang berlangsung secara cepat.

Berikut adalah script sederhana untuk menjalankan backup Zimbra yang saya lakukan di email server perusahaan, dengan konfigurasi sebagai berikut :

  1. IP 192.168.0.4 adalah server IBM X Series 3400 yang menjalankan openSUSE 11.1. Didalamnya ada VirtualBox versi terakhir yang menjalankan openSUSE 10.3+Zimbra Mail Server. Image Zimbra disimpan di folder /srv/hd2/vbox-zimbra. Image bersifat dynamic storage. Saya cadangkan 80 GB dan baru digunakan sebesar 10 GB untuk user account sekitar 100 user. Sebagian user menggunakan email client dan sebagian lagi menggunakan webmail.
  2. Script diletakkan di server backup dengan IP 192.168.0.7. Dijalankan oleh cron job secara periodik 4 jam sekali. Sesuaikan waktu dan periode dengan kebutuhan ditempat anda, karena dikantor saya setting tersebut cukup memadai. Email client menarik data setiap 10 menit sekali.
  3. Backup ini bukanlah backup dengan tujuan menghasilkan 2 server  yang similar/ identik sama persis 100%. Jika itu yang diinginkan, yang anda perlukan adalah duplikat/backup mx server yang otomatis melakukan replikasi.
  4. Proses backup yang dilakukan akan berlangsung secara otomatis kedalam 2 tahap. Tahap pertama berlangsung secara periodik sesuai waktu backup dan disimpan kedalam folder Current. Tahap kedua adalah menyimpan backup mingguan kedalam folder  Tahun/Bulan/Minggu X. Hal ini karena perusahaan menerapkan kebijakan backup harian dan backup mingguan. Data backup mingguan akan disalin kembali ke server backup cadangan.
  5. Untuk mengantisipasi data backup yang menyita kapasitas harddisk, script diset untuk secara otomatis menghapus data backup mingguan 1 bulan yang lalu.
  6. Script ini harus dipadukan dengan cron jobs (kecuali anda mau secara manual menjalankannya :-P ) dan menggunakan fasilitas rsync. Silakan merujuk pada tulisan mengenai rsync untuk contoh konfigurasinya.
  7. Beware : Script yang dibuat masih sangat sederhana dan kemungkinan tidak mencerminkan kode pemrogramman yang baik. Maklum, selama bertahun-tahun melakukan coding dengan Visual Basic :-P . Jika anda mampu memodifikasi kebentuk lain yang lebih baik saya akan sangat mengapresiasinya.

#!/bin/bash

#Hapus Layar
clear

echo "##################################################################################"
echo "# Zimbra-virtual-backup                                                          #"
echo "# Skrip untuk backup virtual image zimbra (vmware, virtualbox) secara periodik   #"
echo "# Masim "Vavai" Sugianto - vavai@vavai.com - http://vavai.com/blog/v2            #"
echo "# Dikirimkan pada Komunitas Zimbra Indonesia - http://zimbra.web.id              #"
echo "# Lisensi : GPL, General Public License                                          #"
echo "##################################################################################"

sourcedir="192.168.0.4::srv/hd2/vbox-zimbra/"
targetdir="/srv/www/htdocs/backup/backup-zimbra/"
targetutama="$targetdir/Current/"
bulan_skrg=$(date '+%m')
tahun_skrg=$(date '+%Y')
tgl_skrg=$(date '+%d')
minggu=$(($tgl_skrg/7))

#Process

if [ $minggu -eq 1 ];
then
targetdir2="$targetdir`date +%Y`/`date +%m`/Minggu-I"
mingguan="1"

elif [ $minggu -eq 2 ];
then
targetdir2="$targetdir`date +%Y`/`date +%m`/Minggu-II"
mingguan="1"

elif [ $minggu -eq 3 ];
then
targetdir2="$targetdir`date +%Y`/`date +%m`/Minggu-III"
mingguan="1"

elif [ $minggu -eq 4 ];
then
targetdir2="$targetdir`date +%Y`/`date +%m`/Minggu-IV"
mingguan="1"

elif [ $minggu -eq 5 ];
then
targetdir2="$targetdir`date +%Y`/`date +%m`/Minggu-V"
mingguan="1"

else
targetdir2="$targetdir/Current/"
mingguan="0"

fi

#buat folder
mkdir -p "$targetdir/Current/"
mkdir -p "$targetdir`date +%Y`/"
mkdir -p "$targetdir`date +%Y`/`date +%m`/"
mkdir -p $targetutama

#backup proses tahap 1

rsync -avh --delete-after $sourcedir $targetutama

#backup proses tahap 2 (backup mingguan)

if [ $mingguan -eq "1" ]; then
rsync -avh --delete-after $targetutama $targetdir2;
fi

#Hapus folder 1 bulan yang lalu

if [ $bulan_skrg -eq 1 ] ; then
vbulan=12
vtahun=$(($tahun_skrg-1))
else
vbulan=$(($bulan_skrg-1))
vtahun=$tahun_skrg
fi

if [ $vbulan -lt 10 ];
then
vbulan=0$vbulan
fi

if [ $minggu -eq 1 ];
then
deldir="$targetdir$vtahun/$vbulan/Minggu-I"

elif [ $minggu -eq 2 ];
then

deldir="$targetdir$vtahun/$vbulan/Minggu-II"

elif [ $minggu -eq 3 ];
then
deldir="$targetdir$vtahun/$vbulan/Minggu-III"

elif [ $minggu -eq 4 ];
then
deldir="$targetdir$vtahun/$vbulan/Minggu-IV"

else
deldir="$targetdir$vtahun/$vbulan/Minggu-V"

fi

rm -rf $deldir

#mail -s "ini subject" "vavai@vavai.com" < "Test konfirmasi backup Zimbra"

Kalau malas mengetik, silakan download script-backup-zimbra :-P

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
12 Responses
  1. mlm says:

    awesome master vavai

  2. yusuf says:

    jadi kalu gak virtual gak bisa live backup ya bro?

  3. &War says:

    Hmm, great solution, bisa di coba nieh untuk implement kedepan. Klo boleh tahu spek yag bagus tuk server yg di tanem VM ini seberapa besar yah??

  4. dikdo says:

    keren, boleh juga di coba

  5. papandut says:

    thx tipsnya. idenya bisa dipakai u/ keperluan lain juga :)

  6. Arie says:

    Saya kira bikin MX Backup, soalnya di gambar atas itu kan MX Backup pak.. :-) Bisa gak zimbra menjadi MX Backup ?

    regards,

  7. bangpei says:

    coba dengan ini lebih
    http://pve.proxmox.com/wiki/Zimbra
    bisa di setup 2, mesin backup snapshot pakai web base
    di tempat saya sudah up lebih kurang 600 users so far si aman tentram
    install zimbra pakai debian diatas proxmox …
    Life So beautiful

  8. rusli says:

    untuk scedule exekusi backup gimana mas? kalau pake cronjob untuk naruh scripnya gimana bos?? atau setting di webmin nya ada tutorialnya ndak

  9. david says:

    Sayangnya metode live backup ini belum dapat digunakan pada mesin (fisik) yang berbeda. Untuk membuat MX backup diperlukan server yang similiar, kemarin membaca di forum ada yg menggunakan drbd dan juga imapsync namun sayang, untuk newbie seperti saya ini pengaplikasiannya cukup rumit [karena kurang wawasan kali :D ]

    Semoga teman-teman ada yang melakukan riset untuk mx backup dan live backup pada 2 mesin yang berbeda.

    Regards,

  10. hasan says:

    kalau virtualboxnya digunakan untuk samba server dan jalan diatas ubuntu, konfigurasi backup image .vdi nya gmn boss….?

  11. [...] Beware : Script yang dibuat masih sangat sederhana dan kemungkinan tidak mencerminkan kode pemrogramman yang baik. Maklum, selama bertahun-tahun melakukan coding dengan Visual Basic . Jika anda mampu memodifikasi kebentuk lain yang lebih baik saya akan sangat mengapresiasinya. view source [...]

  12. Greetings to all, This page is first-class and so is the way the subject was developped. I like some of the comments too although I would suggest everyone stays on the subject matter so that to add value to the message. It will be also encouraging to the writer if we all could mention it (for some of us who use social media such as a digg, twitter,..). Again, Thanks..

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>