Hintergrund : Ich habe zwei MySQL 5.1 Server - Setup in Master-Master zeilenbasierte Replikation (RBR) nach diesem ausgezeichneten Führer . Ich möchte, dass alle Datenbanken repliziert werden und füge regelmäßig neue Datenbanken hinzu.
Ziel : Ich möchte in der Lage sein, der Replikation neue Datenbanken hinzuzufügen, indem ich einfach die Datenbank zu einem der Server hinzufüge. ohne dass Sie beide Slaves anhalten müssen, ändern Sie die Konfigurationsdateien, starten Sie die MySQL-Server neu und starten Sie die Slaves erneut.
Frage : Von dem, was ich gelesen habe, ich glaube , ich kann dies tun , indem Sie einfach das Weglassen alle binlog-do-db
, binlog-ignore-db
, replicate-do-db
, und replicate-ignore-db
Einstellungen in jeder Konfiguration des Servers, aber ich kann nicht sicher sein. Die MySQL-Dokumente zur Bewertung der Replikationsoptionen auf Datenbank- und Tabellenebene lassen mich vermuten, dass dies möglicherweise überhaupt nicht möglich ist.
Relevante Teile meiner /etc/mysql/my.cnf
Dateien werden unten kopiert. Bin ich auf dem richtigen Weg? Ist das, was ich will, überhaupt möglich?
Meister 1 :
[mysqld]
binlog-format = row
server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
master-host = <master2_ip>
master-user = slave_user
master-password = <password>
master-connect-retry = 60
log-bin = /var/log/mysql/mysql-bin.log
relay-log = /var/lib/mysql/slave-relay.log
relay-log-index = /var/lib/mysql/slave-relay-log.index
expire_logs_days = 14
max_binlog_size = 2048M
Meister 2 :
[mysqld]
binlog-format = row
server-id = 2
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 2
master-host = <master1_ip>
master-user = slave_user
master-password = <password>
master-connect-retry = 60
log-bin = /var/log/mysql/mysql-bin.log
relay-log = /var/lib/mysql/slave-relay.log
relay-log-index = /var/lib/mysql/slave-relay-log.index
expire_logs_days = 14
max_binlog_size = 2048M
quelle
Antworten:
So habe ich es für beide Meister gemacht
quelle
log-slave-updates
Einstellung übersprungen , weil ich keine Notwendigkeit dafür sah. Alles funktioniert einwandfrei. Ich kann Datenbanken hinzufügen und löschen, und die Änderungen werden repliziert. Vielen Dank! Kopfgeld vergeben.In Bezug auf die Erstellung von Datenbanken gibt es immer noch Fehlerberichte zur Verwendung von CREATE DATABASE mit zeilenbasierter Replikation.
Dieser Bericht ist geschlossen, aber der Fehler ist erneut in MySQL 5.1.47 aufgetreten.
Dieser Bericht basiert auf MySQL Cluster (NDB Storage Engine).
Dieser Bericht basiert auf einer noch replizierenden Replikat-Wild-Ignore-Tabelle.
Die zeilenbasierte Replikation führt dazu, dass Binärprotokolle mit einer außergewöhnlichen Geschwindigkeit anwachsen, wodurch der Netzwerkverkehr ansteigen kann, wenn nur Binärprotokolldaten an die Relay-Protokolle des Slaves übertragen werden.
@ Mike sagt, er habe die Datenbankerstellung zum Funktionieren und Replizieren gebracht. Das bezweifle ich gar nicht. Was ich bin, ist, dass MySQL (z. B. Oracle) nicht alle Probleme mit der zeilenbasierten Replikation hat, sobald die Datenbank instanziiert wurde.
Möglicherweise möchten Sie zu row_format MIXED wechseln, wenn Sie weiterhin zeilenbasierte Einträge in den Binärprotokollen möchten. Intern tendiert das binäre Protokollformat dazu, zwischen Anweisung und Behoben zu schweben: (Siehe http://bugs.mysql.com/bug.php?id=40146 ). Weitere Fehlerberichte werden mit mixed geschlossen und meiden zeilenbasiert ( http://bugs.mysql.com/bug.php?id=39701 ), aber es treten immer noch zeitweise Probleme auf.
SCHLUSSBEMERKUNG
Kehren Sie zu Ihrer eigenen Sicherheit zur anweisungsbasierten Replikation zurück, und stellen Sie CREATE DATABASE (eine SQL-Anweisung) für nachfolgendes SQL für die erstellte Datenbank stabil und konsistent her. Tatsächlich zeigt der jüngste Fehlerbericht, dass es am besten ist, eine anweisungsbasierte Replikation zu verwenden, unabhängig davon, was in der Dokumentation zu Optionen auf Datenbank- und Tabellenebene angegeben ist.
quelle
Hmm ... Sie müssen auch einen Weg finden, um automatisch inkrementierte Schlüssel und Felder zu behandeln / zu unterscheiden. Das sieht interessant aus. Http://mysql-mmm.org/
quelle
auto-increment-increment
undauto-increment-offset
Einstellungen in meinen Konfigurationsdateien behandelt. Siehe diese Seite: dev.mysql.com/doc/refman/5.1/en/…Ich dachte, Sie sollten in der Lage sein, Datenbank auf Master1 und Master2 zu erstellen, ohne die Konfiguration zu ändern oder den Slave zu stoppen, aber stellen Sie sicher, dass die Master-Master-Replikation ausgeführt wird. Da Sie nicht definieren, welche Datenbank repliziert werden muss, bedeutet dies, dass alle Datenbanken repliziert werden, wenn Sie sie nicht in my.cnf definieren.
quelle