2008-08-11 19 views
10

Wenn ich zwei mysql Server habe, die verschiedene Jobs haben (verschiedene Datenbanken halten), aber eine davon benutzen wollen, wenn die andere fehlschlägt, was würdest du vorschlagen, wie ich das behalte? Daten auf beiden von ihnen gleich "nahe an Echtzeit"?MySQL Replikation für Fallback Szenario

Offensichtlich ist es nicht möglich, alle x Minuten einen vollständigen Datenbankabzug zu erstellen.

Ich habe über die Binary Log gelesen, ist das der Weg, den ich gehen muss? Wird das den Fallback-Server nicht viel langsamer machen? Gibt es eine Möglichkeit, einige Tabellen nicht in das Binärlog aufzunehmen - wo ist es egal, dass sich die Daten geändert haben?

+0

Ich habe genau das gleiche Problem, immer noch nicht ganz sicher, was ich davon halten soll. [Hier ist meine SO Frage mit ein paar anderen Vorschlägen gegeben] (http://stackoverflow.com/questions/3798/full-complete-mysql-db-replication-ideas-what-do-people-do)./mp – mauriciopastrana

Antwort

2

Binär-Log ist definitiv der Weg zu gehen. Sie sollten sich jedoch darüber im Klaren sein, dass Sie mit MySQL nicht einfach zwischen Servern hin- und herwechseln können.

Ein Server wird der Master und der andere wird der Slave sein. Sie schreiben/lesen zum Master, können aber nur vom Slave-Server lesen. Wenn du jemals auf den Slave schreibst, sind sie nicht mehr synchron und es gibt keine einfache Möglichkeit, sie wieder zu synchronisieren (im Grunde musst du sie austauschen, damit der Master der neue Slave ist, aber das ist ein mühsamer manueller Prozess)).

Wenn Sie echte Hot-Swap-fähige Backup-Datenbanken benötigen, müssen Sie möglicherweise zu einem anderen System als MySQL gehen. Wenn Sie nur ein schreibgeschütztes Live-Backup haben möchten, das Sie im schlimmsten Fall sofort verwenden können (Master wird dauerhaft zerstört), dann wird Binary Log Ihnen gut tun.

3

Sie können das Replikations-Szenario Master-Master betrachten, aber mit einer leichten Wendung. Sie können angeben, welche Datenbanken repliziert werden sollen, und die Replikation für jeden Server beschränken.

Für server1 würde ich hinzufügen --replicate-do-db=server_2_db und auf server2 --replicate-do-db=server_1_db zu Ihrem my.cnf (oder my.ini unter Windows). Dies würde bedeuten, dass nur Anweisungen für die server_1_db auf server2 und umgekehrt repliziert würden.

Bitte stellen Sie außerdem sicher, dass Sie regelmäßig vollständige Sicherungen durchführen und nicht nur auf die Replikation vertrauen, da sie keine Sicherheit vor versehentlichen DROP DATABASE Kontoauszügen oder Ähnlichem bietet.