Memulihkan basis data Zimbra yang rusak


1

Saya memiliki masalah besar dengan Zimbra. The ibdatafile rusak, dan aku tidak bisa membuka kotak surat. Saya memiliki semua msgfile di dalamnya store/0/*, tetapi saya hanya memiliki cadangan database dari seminggu yang lalu. Saya sudah mencoba mengembalikan file dari minggu lalu, tetapi tidak menunjukkan email yang kami terima minggu ini. Menambahkannya satu per satu tidak mungkin, karena kami memiliki ratusan email dalam seminggu, dan banyak folder mboxgroup.

Apakah ada cara untuk memindai semua kotak surat dan membiarkan Zimbra membangun kembali basis data? Jika saya harus membuat skrip, bagaimana kita membedakan email antara cadangan dan server macet?

Kami menggunakan Zimbra edisi komunitas.

Jawaban:


0

Ok .. karena tidak ada yang menjawab, saya sudah berhasil ..

Karena kami memiliki banyak email, dan menyebar ke beberapa folder, kami perlu memisahkan yang ada di database dan yang tidak.

Pastikan Anda menyalin ini ... er .. folder data rusak ke folder lain. Jadi, jika terjadi kesalahan, Anda selalu dapat menyatukannya kembali.

  1. Jadi langkah pertama, tentu saja shutdown zimbra

    service zimbra stop
    
  2. lalu salin database mysql yang sudah lama berfungsi ke zimbra yang tidak berfungsi.

    cp /mnt/mail/db/* /opt/zimbra/db -R
    
  3. Sekarang, kita perlu membandingkan surat-surat itu di ~ / store di cadangan Juli, dibandingkan email di ~ / toko dalam menjalankan zimbra. Kemudian saya memindahkan setiap email yang tidak pada bulan Juli ke folder lain yang sesuai di / opt / backup. Skrip di bawah ini adalah untuk memindai semua .msg yang tersedia di semua toko dan volume, dan pindah ke folder lain. Simpan skrip ini di bawah ini yaitucompare.sh

    SOURCE=/opt/zimbra/store/0
    DESTINATION=/opt/backup
    COMPARE=/mnt/mail/store/0
    for f in $SOURCE/*;
    do
        echo "scanning folder ${f##*/}";
        for v in $f/msg/*;
        do
            comp=$COMPARE/${f##*/}/msg/${v##*/}
            dst=$DESTINATION/${f##*/}
            if [ ! -d $dst ]; then
                    echo "create $dst"
                    mkdir $dst;
            fi
    
            echo "comparing volume $v to $comp"
            if [ -d $comp ] ; then
                    for m in $v/*; do
                            if [ ! -f $comp/${m##*/} ]; then
                                    echo "move $m to $dst"
                                    mv -b $m $dst
                            fi
                    done
            else
                    echo "move $v/* to $dst"
                    mv -b $v/* $dst
            fi
        done;
    done;
    

    Pastikan Anda memodifikasi variabel SOURCE, COMPARE dan DESTINATION untuk membuat mirror folder Anda sendiri.

    SUMBER: Saat ini menjalankan folder toko zimbra
    TUJUAN: Di mana Anda ingin file-file Anda yang hilang dipindahkan
    MEMBANDINGKAN: Di mana cadangan zimbra Anda yang lama berada, yang Anda gunakan basis datanya.

    Kemudian chmod a+x compare.shuntuk membuatnya dapat dieksekusi kemudian ./compare.shuntuk menjalankannya.

    hasilnya adalah / opt / backup / 1 ke / opt / backup / xx di mana xx adalah toko kotak surat. Semua pesan yang dipindahkan ke / opt / backup / x tidak ada di kotak surat asli, dan akan ditambahkan.

    Jadi sekarang kita memiliki 2 folder. /opt/backup/xxyang berisi file tidak dalam database, dan /opt/zimbra/yang sebagian besar harus identik/mnt/mail/

  4. Mulai Zimbra kembali

    service zimbra start
    
  5. Sekarang, kita perlu mendapatkan semua kotak surat

     mysql "zimbra" -e"select id,comment from mailbox"
    
  6. Sisanya mudah, kita hanya perlu menelepon CreateFolder dan addMessage seperti ini untuk melampirkan kembali surat-surat yang hilang:

    zmmailbox -z -m <user@domain.net> cf "/Inbox/Recovered"
    zmmailbox -z -m <user@domain.net> am "/Inbox/Recovered" "/opt/backup/<xx>"
    

sebagai contoh:

Katakanlah kita sudah dari langkah 2 di atas

+ ---- + -------------------------------------------- -------- +
| id | komentar |
+ ---- + -------------------------------------------- -------- +
| 1 | mymailbox@bogusmail.xcom |
| 2 | awesome@bogusmail.xcom |
+ ---- + -------------------------------------------- -------- +

Kami harus menambahkan pesan-pesan itu sebagai:

zmmailbox -z -m mymailbox@bogusmail.xcom cf "/Inbox/Recovered"
zmmailbox -z -m mymailbox@bogusmail.xcom am "/Inbox/Recovered" "/opt/backup/1"

zmmailbox -z -m awesome@bogusmail.xcom cf "/Inbox/Recovered"
zmmailbox -z -m awesome@bogusmail.xcom am "/Inbox/Recovered" "/opt/backup/2"

Jangan ragu untuk mengubah / Kotak Masuk / Dipulihkan untuk apa pun yang Anda suka.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.