Al lavoro facciamo una discarica notturna dei nostri database mysql. Di giorno in giorno, direi che quasi il 90-95% dei dati è duplicato, aumentando col passare del tempo. (Cavolo a questo punto alcuni sono probabilmente del 99%)
Questi dump sono dove una riga è una singola istruzione INSERT mysql, quindi le uniche differenze sono intere righe e l'ordine in cui si trovano nel file. Se li avessi ordinati, la differenza effettiva da un file all'altro sarebbe molto piccola.
Ho cercato e non ho trovato alcun modo per ordinare l'output in dump. Potrei inoltrarlo tramite il sort
comando, comunque. Quindi ci sarebbero lunghi, lunghi blocchi di linee identiche.
Quindi sto cercando di trovare un modo per memorizzare solo i diff. Potrei iniziare con una discarica principale, e differire da quello ogni notte. Ma le differenze sarebbero più grandi ogni notte. Oppure, potrei fare diff rolling, che individualmente sarebbe molto piccolo, ma sembra che ci vorrebbe sempre più tempo per calcolare, se dovessi mettere insieme un master diff di tutta la serie ogni notte.
È fattibile? Con quali strumenti?
Modifica Non sto chiedendo come eseguire i backup di mysql. Dimentica mysql per il momento. È un'aringa rossa. Quello che voglio sapere è come creare una serie di diff differenziali da una serie di file. Ogni notte otteniamo un file (che sembra essere un file mysqldump ) che è simile al 99% a quello precedente. Sì, li comprimiamo tutti. Ma è ridondante avere tutta quella ridondanza in primo luogo. Tutto ciò di cui ho veramente bisogno sono le differenze rispetto alla sera prima ... che è solo l'1% diverso dalla notte prima ... e così via. Quindi quello che sto cercando è come fare una serie di diff, quindi ho bisogno di immagazzinare solo l'1% ogni notte.