Cadangan MySQL Tambahan / Diferensial menggunakan mysqldump

9

Apakah ada teknik untuk menggunakan mysqldump (atau perintah serupa) untuk membuat cadangan inkremental atau diferensial untuk MySQL?

Brian Boatright
sumber

Jawaban:

0

Saya menggunakan binlog tetapi itu bukan solusi akhir dan saya cenderung mendapati diri saya mengandalkan snapshot juga.

Ada dua alasan utama untuk ini:

  • Binlog menyimpan semua perubahan. Binlog senilai satu minggu kemungkinan akan secara signifikan lebih besar daripada perbedaan antara dua foto dalam seminggu. Satu-satunya bantuan adalah bahwa binlog cenderung kompres dengan baik (biasanya jauh di bawah 10%).
  • Jika Anda perlu melakukan audit atau kembali maka memutar ulang binlog terhadap snapshot kuno akan memakan waktu yang sangat lama dan semakin besar binlog semakin besar kemungkinan kesalahan sehingga Anda memerlukan snapshot biasa.

Saya memiliki sejumlah besar snapshot baru-baru ini tidak ada kompresi atau diferensial. Saya bereksperimen dengan diff dan menemukan bahwa bahkan dengan opsi seperti tidak ada konteks perbedaan yang dihasilkan lebih besar.

Tanpa mencoba semua alternatif, hal terbaik yang saya temukan adalah rdiff. Ini mengurangi mereka menjadi sekitar 5% dari ukuran untuk saya dan ketika kemudian dikompres dengan xz ke zona 1%.

Meskipun file tanda tangan rdiff tidak kompres dengan baik karena mereka adalah koleksi hash (sama seperti data acak), mengompresnya satu sama lain akan menghasilkan hasil yang baik.

Banyak orang tidak akan memerlukan solusi seperti itu dalam banyak kasus jika ada kegagalan mereka perlu menyimpan database dengan gambar terbaru dan memperbaruinya secepat mungkin.

Namun, jika Anda memiliki sistem yang kompleks yang membutuhkan banyak akuntansi, audit, debugging, dll (hal-hal yang lebih penting daripada blog) maka penyimpanan snapshots yang efisien menjadi penting.

jgmjgm
sumber