MySQL-Replikation auf geografisch getrennten Servern

11

Meine Organisation hat untersucht, wie wir unsere Server geografisch verteilen, Backups auf dem neuesten Stand halten und die Last idealerweise verteilen können.

Das erste, was ich vorhabe, ist Rails on MySQL. Die Schreibrate ist nicht zu hoch (Artikel / Kommentare werden mit weniger als 1 pro Minute belassen, obwohl einige große Medienanhänge haben).

So,

  • Funktioniert die MySQL-Replikation in Weitverkehrsnetzwerken gut?
  • Bedeutet der Ausfall der Verbindung (oder eines Slave-Servers), dass ein manueller Eingriff erforderlich ist (sobald die beiden Server wieder miteinander kommunizieren können), oder erfolgt die Wiederherstellung automatisch?
  • Wenn der Master verschwindet, was ist erforderlich, um einen Slave in einen Master zu verwandeln? Gibt es Standard-Skripte / -Tools, um dies zu verwalten?
  • Irgendwelche anderen Fallstricke usw.?
Hamish Downer
quelle

Antworten:

6

Wir verwenden die Replikation zwischen Rechenzentren in mehreren europäischen Ländern (sie sind also nicht weltweit voneinander entfernt, aber sicherlich nicht lokal) und sie funktioniert problemlos.

Die Replikation wird nach Möglichkeit automatisch neu gestartet. Wenn bei einer Abfrage ein Problem auftritt (z. B. ist eine Datenbank auf dem Master und nicht auf dem Slave vorhanden und wird von einer Abfrage verwendet), muss diese standardmäßig manuell korrigiert werden (Sie können sie jedoch so einstellen, dass solche Fehler ignoriert werden). Wenn es sich bei den Datenbanken um exakte Spiegel handelt, sollten Sie die Replikation niemals manuell neu starten müssen.

Wenn Sie zwei Server haben und der Master verschwindet, beenden Sie einfach die Replikation und ändern Sie Ihren Code (um in den neuen 'Master' zu schreiben), um den Slave in den 'Master' zu verwandeln. Wenn Sie drei oder mehr Server haben und der Master verschwindet, beenden Sie die Replikation auf den Slaves, ändern Sie sie, um den neuen Master zu verwenden, und starten Sie erneut. Wenn sie nicht genau synchron sind (hängt davon ab, wie viele Daten übertragen werden, wie ausgelastet die Server sind, wie gut die Netzwerkverbindung ist usw.), müssen Sie möglicherweise mehr Arbeit leisten. Der Replikationsabschnitt der MySQL-Dokumentation behandelt dies ausführlicher .

Ich würde vorschlagen, dass Sie sicherstellen, dass Sie über SSL replizieren (dh den Replikationsbenutzer so einstellen, dass eine SSL-Verbindung erforderlich ist).

Tony Meyer
quelle
4

Die Replikation hat sich in MySQL 5.1 dramatisch geändert. In 5.0 wurde nur die anweisungsbasierte Replikation verwendet. Sie haben jetzt die Möglichkeit, eine zeilenbasierte Replikation oder eine gemischte Replikation durchzuführen. Dies hat erhebliche Auswirkungen darauf, wie Sie über ein WAN replizieren.

Wenn Sie die folgenden Möglichkeiten haben: A) IP übernehmen (wenn Ihre Server geografisch getrennt sind, ist dies nicht wahrscheinlich) B) Agile DNS-Änderungen vornehmen Sie können vermeiden, den App-Code / die Konfiguration zu ändern, um die Master zu ändern. Wir verwenden internes DNS mit kurzem Caching und gefälschten internen Domains. Wenn wir masterdb.internal ändern müssen, um ein anderer Server zu sein, wird die Änderung in 5 Sekunden ausgelöst.

Innerhalb eines einzelnen Rechenzentrums verwenden wir IP-Übernahme. Alle DB-Server verfügen über virtuelle Schnittstellen (eth0: 1, eth0: 2, eth0: 3), die beim Booten nicht aktiviert werden. Wenn einer der Slaves übernehmen muss, müssen Sie nur eth0: 2 und es ist der Master. In diesem Szenario ist eth0 das 'Wenn', das wir zum Shelling verwenden, und so weiter. Die Apps stellen eine Verbindung auf eth0: 1 her, die beim Booten nicht aktiviert wird, wenn mein Skript feststellt, dass die IP übernommen wurde. (wikipedia STONITH) Die anderen ifs dienen zur Übernahme der IPs von Mastern, für die möglicherweise ein Failover erforderlich ist.

Bruno Bronosky
quelle
3

Ich würde nicht empfehlen, die Ozeane zu überqueren, wenn Sie eine MySQL-Replikation verwenden. Ich habe einmal versucht, von einem Meister in Europa zu replizieren, während der Sklave in Texas war. Die Replikation wurde fast jeden Tag unterbrochen, bis wir dieses Projekt abgebrochen haben. Natürlich kann es funktionieren, aber je größer der Abstand zwischen Master und Slave ist, desto zerbrechlicher wird es.

tex
quelle