Mysql
 sql >> Database >  >> RDS >> Mysql

L'ultimo incubo del database legacy MySQL

Non sono una persona MySQL, quindi questo viene fuori dal campo sinistro.

Ma penso che i file di registro potrebbero essere la risposta.

Per fortuna, devi sapere solo 2 cose dal registro.

Hai bisogno del record/rowid e hai bisogno dell'operazione.

Nella maggior parte dei DB, e presumo MySQL, c'è una colonna implicita su ogni riga, come un rowid o un recordid, o altro. È il numero di riga interna utilizzato dal database. Questa è la tua chiave primaria "gratuita".

Successivamente, è necessaria l'operazione. In particolare se si tratta di un'operazione di inserimento, aggiornamento o eliminazione sulla riga.

Consolidi tutte queste informazioni, in ordine di tempo, e poi le esegui.

Per ogni inserimento/aggiornamento, selezioni la riga dal database originale e inserisci/aggiorna quella riga nel database di destinazione. Se si tratta di un'eliminazione, elimini la riga.

Non ti interessano i valori dei campi, semplicemente non sono importanti. Fai l'intera riga.

Si spera che non dovresti "analizzare" i file di registro binari, MySQL deve già avere delle routine per farlo, devi solo trovare e capire come usarli (potrebbe esserci anche qualche utile utilità di "scarica log" che potresti usare ).

Ciò ti consente di mantenere il sistema abbastanza semplice e dovrebbe dipendere solo dalla tua attività effettiva durante il giorno, piuttosto che dalla dimensione totale del DB. Infine, potresti successivamente ottimizzarlo rendendolo "più intelligente". Ad esempio, forse inseriscono una riga, quindi la aggiornano, quindi la eliminano. Sapresti che puoi semplicemente ignorare completamente quella riga nel tuo replay.

Ovviamente questo richiede un po' di conoscenza arcana per leggere effettivamente i file di registro, ma il resto dovrebbe essere semplice. Mi piacerebbe pensare che anche i file di registro siano dotati di timestamp, quindi puoi sapere di lavorare sulle righe "da oggi" o qualsiasi intervallo di date desideri.