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

Wie kann ich zwei MySQL-Tabellen synchronisieren, die dieselben Strukturen und unterschiedliche Server haben

Es gibt ein paar Optionen. Eine besteht darin, Replikation einzurichten innerhalb von MySQL, das automatisch Daten zwischen den Servern hin und her kopiert und sie automatisch synchronisiert, mit einer Granularität von wenigen Sekunden, während die Daten herumfliegen. Der Nachteil ist, dass Sie zumindest den Master-Server dem Netz aussetzen müssen, um TCP-Verbindungen zuzulassen.

Extern können Sie regelmäßig mysqldumps auf Server A machen, auf Server B kopieren, in mysql laden und los geht's. Dies hat eine Granularität des Zeitintervalls, in dem Sie die Dump/Copy/Load-Sequenz ausführen. Der Nachteil ist, dass mysqldump Tabellen sperrt, während es funktioniert. Wenn Sie eine große Datenbank haben, werden Sie von den Tabellen von ServerA gesperrt, während der Dump fortschreitet, und von ServerB gesperrt, während die Daten geladen werden. Und das Laden eines Dumps ist viel langsamer als das eigentliche Erstellen des Dumps, da mysql während des Ladevorgangs alle Arten von interner Verwaltung (Schlüsselaktualisierungen, Tabellenmetadatenaktualisierungen usw.) durchführt.

Für die dritte Option könnten Sie einen Synchronizer schreiben, der Zeilen zwischen den beiden Datenbanken vergleicht und bei Bedarf Aktualisierungen vornimmt. Dann schlürfen Sie jedoch den Inhalt eines Servers auf den anderen und führen zeilenweise Operationen durch. Außerdem müssen Sie auch alle abhängigen Aktualisierungen von Fremdschlüsseln/Kindbeziehungen handhaben, und dies wird in Eile kompliziert. An diesem Punkt ist es vielleicht besser, stattdessen die mysqldump-Option zu verwenden.

Natürlich sollten Sie Ihr MySQL auf etwas Moderneres upgraden. v4.x ist sehr veraltet. Sie sollten stattdessen mindestens eine 5.0-, besser eine 5.1-Version verwenden.