Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Der ultimative MySQL-Legacy-Datenbank-Albtraum

Ich bin kein MySQL-Experte, also kommt das aus dem linken Feld.

Aber ich denke, die Protokolldateien könnten die Antwort sein.

Zum Glück müssen Sie wirklich nur 2 Dinge aus dem Protokoll wissen.

Sie brauchen die record/rowid und Sie brauchen die Operation.

In den meisten DBs, und ich nehme an, MySQL, gibt es eine implizite Spalte in jeder Zeile, wie eine Rowid oder Recordid oder was auch immer. Es ist die interne Zeilennummer, die von der Datenbank verwendet wird. Dies ist Ihr "freier" Primärschlüssel.

Als nächstes brauchen Sie die Operation. Insbesondere, ob es sich um eine Einfüge-, Aktualisierungs- oder Löschoperation für die Zeile handelt.

Sie konsolidieren alle diese Informationen in zeitlicher Reihenfolge und gehen sie dann durch.

Für jede Einfügung/Aktualisierung wählen Sie die Zeile aus Ihrer ursprünglichen DB aus und fügen diese Zeile in Ihre Ziel-DB ein/aktualisieren sie. Wenn es sich um eine Löschung handelt, löschen Sie die Zeile.

Sie interessieren sich nicht für Feldwerte, sie sind einfach nicht wichtig. Mache die ganze Reihe.

Sie sollten hoffentlich keine binären Protokolldateien "parsen" müssen, MySQL muss dafür bereits Routinen haben, Sie müssen nur herausfinden und herausfinden, wie Sie sie verwenden (es gibt möglicherweise sogar ein praktisches "Dump Log" -Dienstprogramm, das Sie verwenden könnten ).

Auf diese Weise können Sie das System ziemlich einfach halten und es sollte nur von Ihrer tatsächlichen Aktivität während des Tages abhängen und nicht von der Gesamtgröße der DB. Schließlich könnten Sie es später optimieren, indem Sie es "intelligenter" machen. Vielleicht fügen sie zum Beispiel eine Zeile ein, aktualisieren sie dann und löschen sie dann. Sie würden wissen, dass Sie diese Zeile in Ihrer Wiedergabe einfach komplett ignorieren können.

Offensichtlich erfordert dies ein wenig arkanes Wissen, um die Protokolldateien tatsächlich zu lesen, aber der Rest sollte einfach sein. Ich würde gerne denken, dass die Protokolldateien auch mit einem Zeitstempel versehen sind, damit Sie wissen, dass Sie an Zeilen "ab heute" oder in einem beliebigen Datumsbereich arbeiten müssen.