Di tempat kerja kami melakukan dump malam dari database mysql kami. Dari hari ke hari, saya akan menyarankan bahwa hampir 90-95% dari data adalah duplikat, meningkat seiring berjalannya waktu. (Heck pada titik ini ada yang mungkin 99%)
Kesedihan ini adalah di mana satu baris adalah pernyataan INSERT mysql tunggal, jadi satu-satunya perbedaan adalah seluruh baris, dan urutan di mana mereka berada dalam file. Jika saya menyortirnya, perbedaan sebenarnya dari file ke file akan sangat kecil.
Saya sudah mencari, dan saya belum menemukan cara untuk mengurutkan output pada dump. Saya bisa menyalurkannya melalui sort
perintah. Kemudian akan ada blok panjang yang sama dari garis yang identik.
Jadi saya mencoba mencari cara untuk menyimpan hanya diff. Saya bisa mulai dengan dump utama, dan berbeda setiap malam. Tetapi perbedaan akan lebih besar setiap malam. Atau, saya bisa membuat rolling diff, yang secara individual akan sangat kecil, tetapi sepertinya akan lebih lama dan lebih lama untuk dihitung, jika saya harus membuat master diff dari seluruh seri setiap malam.
Apakah ini layak? Dengan alat apa?
Sunting Saya tidak bertanya bagaimana cara melakukan backup mysql. Lupakan mysql untuk saat ini. Itu adalah herring merah. Yang ingin saya ketahui adalah bagaimana membuat serangkaian rolling bergulir dari serangkaian file. Setiap malam kami mendapatkan file (yang merupakan file mysqldump ) yang 99% mirip dengan yang sebelumnya. Ya, kami gzip semuanya. Tapi itu berlebihan untuk memiliki semua redundansi itu di tempat pertama. Yang saya butuhkan hanyalah perbedaan dari malam sebelumnya ... yang hanya 1% berbeda dari malam sebelumnya ... dan seterusnya. Jadi yang saya cari adalah bagaimana membuat serangkaian diff jadi saya hanya perlu menyimpan 1% itu setiap malam.