Pada rilis Carbonio sebelumnya, ActiveSync dalam kondisi tertentu dan dengan klien tertentu dapat menghasilkan jumlah besar data histori sync state di tabel MySQL mail_item. Seiring waktu, hal ini menyebabkan beberapa masalah berikut:
- Ukuran tabel database menjadi sangat besar
- Query database dan performa sinkronisasi menjadi lebih lambat
- Penggunaan storage yang berlebihan
Peningkatan di Carbonio 25.9.0
Carbonio versi 25.9.0 menghadirkan beberapa fitur baru untuk mengoptimalkan pertumbuhan database dan proses maintenance.
1. Perintah Baru untuk Pembuatan Index Manual
Diperkenalkan perintah CLI baru:
carbonio mobile createStateIndex
Fungsi:
- Membuat index pada tabel ActiveSync
- Index ini wajib untuk mengaktifkan logika cleanup terbaru
- Waktu eksekusi bergantung pada ukuran tabel (bisa cukup lama pada sistem dengan database besar)
- Hanya perlu dijalankan sekali per infrastruktur
2. Parameter Retention Period pada doPurgeMobileState
Perintah doPurgeMobileState kini mendukung parameter retention period, sehingga admin dapat menentukan berapa lama data sync state disimpan.
Contoh:
carbonio mobile doPurgeMobileState retention-period 90
Penjelasan:
- Menyimpan sync state selama periode tertentu (default: 90 hari)
- Menghapus data device yang sudah tidak aktif melebihi periode tersebut
3. Pemulihan Ruang Otomatis (Automatic Space Recovery)
Setelah setiap proses purge selesai, Carbonio akan menjalankan VACUUM pada database secara otomatis untuk:
- Mengembalikan ruang storage fisik
- Menjaga efisiensi penggunaan disk
4. Logika Cleanup Sinkronisasi yang Lebih Baik
Saat proses ActiveSync berjalan:
- Status lama akan dihapus secara otomatis
- Ukuran tabel status tetap kecil
- Pertumbuhan data jangka panjang dapat dikendalikan
Persyaratan Penting
⚠️ Peningkatan ini hanya berfungsi jika index database baru telah dibuat.
Panduan untuk Administrator
Setelah upgrade ke Carbonio 25.9.0 atau pada instalasi baru, admin wajib menjalankan:
carbonio mobile createStateIndex
Catatan penting:
- Pada instalasi baru dengan database kosong, proses ini sangat cepat
- Pada sistem dengan database besar, waktu eksekusi bisa lama
- Sangat disarankan menjalankan perintah ini saat beban sistem rendah
- Jika terdapat beberapa Mailstore server (Mailstore & Provisioning node), perintah ini cukup dijalankan sekali pada satu Mailstore node saja
Maintenance Rutin
Untuk menjaga ukuran database dan penggunaan storage tetap optimal, jalankan secara berkala:
carbonio mobile doPurgeMobileState retention-period <hari>
Otomatisasi dengan Cron
Login sebagai user zextras, lalu edit crontab:
crontab -e
Scroll ke bagian paling bawah (setelah komentarZEXTRAS-END -- DO NOT EDIT ANYTHING BETWEEN THIS LINE AND ZEXTRAS-START)
dan tambahkan:
45 23 * * * /opt/zextras/bin/carbonio mobile doPurgeMobileState > /dev/null 2>&1
Penjelasan:
- Task akan dijalankan setiap hari pukul 23:45
- Waktu eksekusi bisa diubah dengan menyesuaikan nilai jam dan menit
- Jika ada beberapa Mailstore server, cron ini hanya dijadwalkan di satu Mailstore node saja