Ich entwickle eine Anwendung auf dem Client-PC (Win), die mit einer MySQL-Server 5.1-Instanz konfiguriert ist, die als schreibgeschützter Slave für den Remote-Master fungiert. Der Remote-Master hat Dutzende von Schemas, aber ich benötige nur einen pro Client. Daher stelle ich die Einstellung replication-do-db in my.ini bereit, um nur das Schema zu replizieren, das der Client benötigt. Die Replikation funktioniert, aber wenn unsere Kunden in Regionen der Welt gelangen, in denen der Internetzugang nur über 3G-Wireless verfügbar ist, die durch die Datennutzung belastet werden, überschreiten sie schnell ihre Datenplangrenzen und stoßen auf teure Probleme.
Wie ich es verstehe, schreibt MySQL alle Transaktionen für alle Schemas in eine einzige binlog-Datei, was bedeutet, dass jeder Client alle Transaktionen herunterladen muss, die auf jedem Schema auf dem Master ausgeführt werden, dann nach dem Download den Datenbankfilter anwenden pro replication-do-db -Einstellungen in der my.ini-Datei des Clients.
Um diese Ineffizienz zu minimieren, habe ich die slave_compressed_protocol = 1 Einstellung verwendet, die die übertragenen Daten um 50% reduziert, aber immer noch dazu führt, dass unsere Kunden ihre Datengrenze schneller als die 3G-Rechnung überschreiten .
Ich kann mir nicht vorstellen, dass ich der Einzige bin, der damit konfrontiert wird. Ich bin mir sicher, dass ich eine Menge Antworten bekommen werde, wie ich dies erreichen kann, indem ich x = y setze. Ich kann jedoch keine Dokumentation für eine solche Einstellung oder eine empfohlene Vorgehensweise finden.
So weit, hier ist mein Gedanke zu einer möglichen Lösung, bitte geben Sie Feedback oder alternative Routen:
Dies sollte dazu führen, dass der Client nur die binlog-Daten für sein Schema extrahiert. Der Nachteil (soweit ich das beurteilen kann) ist, dass es die Komplexität unseres Setups dramatisch erhöht und es wahrscheinlich fragiler macht.
Gedanken? Wird dieser Ansatz überhaupt funktionieren?
Hinweis: Wir betreiben den MySQL 5.0-Server auf RedHat, aber wir könnten auf 5.5 aktualisieren, wenn es eine Lösung erzeugt.
Ich habe diese Frage bereits im DBA Stack Exchange angesprochen: Ссылка
Ich möchte nicht im Stack Exchange verdoppeln. Moderatoren, bitte schließe das !!!
Zwei Vorschläge
1.) Verwenden Sie die Option --replicate-do-table und geben Sie nur die gewünschten Tabellen an
2.) Versuchen Sie es mit --replicate-wild-do-table = name. Sie sollten alle Ihre Tabellen auf diese Weise filtern können, wenn Ihre Tabellen einen eindeutigen Namen haben
Tags und Links mysql database-replication