Frage

Ich habe ehrlich versucht diese left und rechts und immer noch finden, dass mein Spiegelserver als Replikations-Slave einrichten noch hinterherhinkt. Mein App Nutzerbasis wächst und jetzt Ive erreichte den Punkt, wo ich nicht „heruntergefahren“ halten kann „synchronisieren“ Datenbanken (auch nicht am Wochenende).

Wie auch immer, meine Frage: Gibt es plausibel, erschwinglich , Alternativen Replikation binlog? Ich habe zwei Servern, so würde nur noch nicht als ein Drittel für den Kauf von Lastausgleich, es sei denn, seine einzige Option.

Cheers,

/ mp

War es hilfreich?

Lösung

Ihr Master führt parallel und Ihr Slave führt in serial. Wenn Ihr Master 1,5 Stunden Einsätze / Aktuelles / führt in 1 realer Stunde verarbeiten kann, wird Ihr Sklave ins Hintertreffen geraten.

Wenn Sie nicht Wege finden, können die Schreibleistung auf Ihrem Slave (mehr Speicher, schnellere Festplatten, entfernen Sie unnötige Indizes) zu verbessern, haben Sie eine Einschränkung in Ihren Anwendungen Architektur treffen. Schließlich werden Sie einen Punkt getroffen, dass Sie die Änderungen in Echtzeit ausführen kann, so schnell wie Ihr Master sie parallel ausgeführt werden können.

Viele große Websites Scherbe ihre Datenbanken: Betrachten Sie Ihre Master + Slave in mehrere Master + Slave-Cluster aufgeteilt wird. Dann teilen Sie Ihre Kundenbasis in diesen Clustern. Wenn ein Slave hinter zu fallen beginnt, ist es Zeit, einen anderen Cluster hinzuzufügen.

Es ist nicht billig, aber wenn man einen Weg finden, können Sie binlog Replikation ausführen Anweisungen parallel machen wird wahrscheinlich keinen besseren Weg, es zu tun finden.

Update (2017) : MySQL jetzt unterstützen parallel Slave Arbeitsthreads . Es gibt immer noch viele Variablen, die einen Sklaven verursacht zurückfallen, sondern Sklaven brauchen nicht mehr in serieller Reihenfolge zu schreiben. Die Wahl der Commit Reihenfolge der parallelen Slave-Threads zu erhalten, ist eine wichtige Option zu betrachten, wenn der genaue Zustand des Slaves an jedem beliebigen Punkt in der Zeit ist von entscheidenden Bedeutung.

Andere Tipps

Haben Sie versucht: 1) SET innodb_flush_log_at_trx_commit = 0 2) SET sync_binlog = 0

Beide helfen, Ihren Slave mit einem kleinen Level von zusätzlichem Risiko zu beschleunigen, wenn Sie einen Server-Ausfall haben.

Speicher an den Slave Hinzufügen würde wahrscheinlich helfen. Wir gingen von 32 bis 128 MB und die rückständigen mehr oder weniger ging. Aber sein weder billig, noch wird es in allen Situationen ausreichend sein.

einen dritten Server Kauf wird wahrscheinlich nicht viel helfen, aber Sie werden wahrscheinlich nur eine weitere nacheilenden Slave erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top