Wir haben ein Vanilla-Master- und Slave-MySQL-Setup, das sich in verschiedenen Rechenzentren befindet, und einen weiteren Slave im selben Rechenzentrum wie der Master.
Die Bandbreite zwischen dem Rechenzentrum ist ziemlich hoch (in den von uns durchgeführten Netzwerk-Benchmarks können wir 15 MB / Sekunde erreichen), aber die Latenz beträgt ungefähr 28 ms. Es ist keineswegs hoch, aber es ist viel höher als die Latenz von weniger als einer Sekunde im selben Rechenzentrum.
Gelegentlich treten beim Entfernen des Slaves schwerwiegende Verzögerungen (2000 Sekunden und mehr) auf, während der lokale Slave auf dem neuesten Stand bleibt. Wenn Sie sich den verzögerten Remote-Slave ansehen, verbringt der SQL-Thread normalerweise die Zeit damit, darauf zu warten, dass der E / A-Thread das Relay-Protokoll aktualisiert. Der Meister zeigt gleichzeitig "Warten auf Netz" oder ähnliches.
Es bedeutet also, dass es sich um ein Netzwerk handelt, aber wir haben zu diesem Zeitpunkt noch freie Bandbreite.
Meine Frage ist : Kann die Latenz zwischen den Rechenzentren die Replikationsleistung beeinflussen? Streamen die Slave-Io-Threads die Ereignisse nur so lange, bis der Master aufhört, sie zu senden, oder bündelt er den Master irgendwie zwischen Ereignissen?