2008-08-06 8 views
19

Zur Zeit habe ich zwei Linux-Server mit MySQL, einen direkt neben mir unter einem 10 Mbit/s Upload-Pipe (Hauptserver) und ein paar Kilometer weiter auf einem 3 Mbit/s Upload-Pipe (Spiegel) .Vollständige vollständige MySQL-Datenbankreplikation? Ideen? Was machen Leute?

Ich möchte in der Lage sein, Daten auf beiden Servern kontinuierlich zu replizieren, aber sind in mehrere Roadblocks geraten. Eine davon ist, dass unter MySQL Master/Slave-Konfigurationen hin und wieder einige Anweisungen (!) Fallen, was bedeutet; Einige Leute, die sich bei der Spiegel-URL anmelden, sehen keine Daten, von denen ich weiß, dass sie sich auf dem Hauptserver befinden und umgekehrt. Nehmen wir einmal an, dass dies einmal pro Monat auf einem aussagekräftigen Datenblock geschieht, damit ich damit leben und davon ausgehen kann, dass es sich um ein "verlorenes Paket" -Problem handelt (d. H. Weiß Gott, aber wir werden es kompensieren). Das andere wichtigste (und ärgerlichste) wiederkehrende Problem ist, dass, wenn aus irgendeinem Grund wir einen großen Upload oder Update (oder Neustart) an einem Ende und sever der Link, dann LOAD DATA FROM MASTER nicht tun arbeiten und ich muss auf der einen Seite manuell ablegen und auf der anderen hochladen, eine ziemlich große Aufgabe, die heutzutage Daten im Umfang von .5 TB bewegt.

Gibt es Software dafür? Ich weiß, MySQL (das "Unternehmen") bietet dies als einen sehr teuren Service (vollständige Datenbankreplikation). Was machen die Leute dort draußen? So wie es strukturiert ist, führen wir einen automatischen Failover aus, bei dem, wenn ein Server nicht aktiv ist, die Haupt-URL einfach auf den anderen Server aufgelöst wird.

+0

Vielleicht Inspiration sein könnte: [http://www.howtoforge.com/loadbalanced_mysql_cluster_debian](http://www.howtoforge.com/loadbalanced_mysql_cluster_debian) – svrist

Antwort

0

GoldenGate ist eine sehr gute Lösung, aber wahrscheinlich so teuer wie der MySQL-Replikator.

Es im Grunde Tails das Journal und wendet Änderungen basierend auf was festgelegt ist. Sie unterstützen die bidirektionale Replikation (eine schwierige Aufgabe) und die Replikation zwischen heterogenen Systemen.

Da sie mit der Verarbeitung der Journaldatei arbeiten, können sie eine großräumige verteilte Replikation durchführen, ohne die Leistung der Quellmaschine (n) zu beeinträchtigen.

0

Ich habe noch nie Anweisungen verloren, aber es gibt einen Fehler, bei dem Netzwerkprobleme zu einer Beschädigung der Relay-Logs führen können. Stellen Sie sicher, dass Sie MySQL ohne diesen Fix nicht ausführen.

in den 5.0.56, 5.1.24 und 6.0.5 Changelogs Dokumentierte wie folgt:

Network timeouts between the master and the slave could result 
    in corruption of the relay log. 

http://bugs.mysql.com/bug.php?id=26489

3

Wir bei Percona bieten kostenlose Tools, Diskrepanzen zwischen Master zu erkennen und Server, und sie wieder in Synchronisation zu bringen, indem Sie minimale Änderungen erneut anwenden.