Ich habe eine MySQL-Master-Slave-Konfiguration erstellt und die Dinge sehen gut aus. der "show master status"; auf Slave zeigt keinen Fehler an. Dies ist die Ausgabe
Slave_IO_State: Waiting for master to send event
Master_Host: 109.123.100.58
Master_User: replica
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 106
Relay_Log_File: relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 106
Relay_Log_Space: 106
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Bei der Replikation auf dem Slave scheint dies jedoch nicht zu geschehen, wenn der Master geändert wird
Auf Meister. MASTER STATUS ZEIGEN
+------------------+----------+--------------+-------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+-------------------------+
| mysql-bin.000001 | 639495 | | mysql,informationschema |
+------------------+----------+--------------+-------------------------+
auf Slave SHOW PROCESSLIST ergibt
+-----+-------------+-----------+------+---------+-------+-----------------------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+-------------+-----------+------+---------+-------+-----------------------------------------------------------------------+------------------+
| 174 | system user | | NULL | Connect | 25777 | Waiting for master to send event | NULL |
| 175 | system user | | NULL | Connect | 25777 | Has read all relay log; waiting for the slave I/O thread to update it | NULL |
| 199 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+-----+-------------+-----------+------+---------+-------+-----------------------------------------------------------------------+------------------+
3 rows in set (0.00 sec)
Vermisse ich etwas?
mysql
replication
Soja
quelle
quelle
SHOW MASTER STATUS
, das oberste bit fehlt meiner denke nach.SHOW MASTER STATUS
auf den Sklaven . Diese Informationen sind nur relevant, wenn der Slave auch als Master für andere weiter stromabwärts gelegene Slaves dient.SHOW PROCESSLIST
am Master sind, sehen Sie die eingehende Verbindung vom Slave? Du solltest. Außerdem würde ichSTOP SLAVE IO_THREAD;
dannSTART SLAVE IO_THREAD;
auf dem Slave versuchen und sehen, wie sich der Ausgang vonSHOW SLAVE STATUS
(auf dem Slave) ändert, wenn überhaupt.Antworten:
Die von Ihnen präsentierte Ausgabe ist sehr verwirrend. Einerseits zeigt der Meister:
Der Slave
PROCESSLIST
zeigt an, dass die Replikation funktioniert (der IO - Thread mit dem Master verbunden ist, wird der SQL - Thread wartet).Der Sklave
SHOW SLAVE STATUS
behauptet erneut, alles sei in Ordnung, aber die Position des Meisters ist106
.Werden alle diese Ausgaben ungefähr zur gleichen Zeit ausgegeben? Wenn nicht, dann sind sie nicht wertvoll.
Ich würde folgendes überprüfen:
109.123.100.58
wirklich dein Meister?SHOW PROCESSLIST
auf dem Master die Verbindung auf, die der Slave unter demreplica
Benutzer hergestellt hat?server-id
Einstellungen für Master und Slave?replicate-do-*
oderreplicate-ignore-*
Einstellungen in Ihrermysql.cnf
Datei?quelle
+-------+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-------+------+-----------+------+---------+------+-------+------------------+ | 23243 | root | localhost | NULL | Query | 0 | NULL | SHOW PROCESSLIST | +-------+------+-----------+------+---------+------+-------+------------------+
Besser als die Verwendung von binlog-ignore-db ist die Verwendung der Slave-seitigen Filterung. Ich war in einer ähnlichen Situation gefangen, ja, ich habe einen ganzen Tag gebraucht, um herauszufinden:
Ich habe etwas Großes verpasst !!!
Der Unterschied zwischen
Auf der Sklavenseite. Und
hat bei mir auf -do-table nicht funktioniert. Ich musste benutzen
Ich denke, das hätte für eine Wildcard funktioniert
... Nun erfahren Sie, wie Sie dieselbe Tabelle von mehreren Mastern replizieren können. Okay, ich habe es herausgefunden, MySQL unterstützt es nicht von Haus aus. MariaDB 10 tut es.
Anfangs hatte ich auch ein anderes Problem: Mein Passwort war länger als 32 Zeichen. Boo!
quelle
Ich bin auch auf dieses Problem gestoßen. Die Hauptursache war, den Meister zu haben
server_id=0
. MariaDB hat ein spezielles Verhalten, beiserver_id=0
dem die Replikation nicht funktioniert.Als ich anfing, basierend auf 1 zu indizieren, funktionierte alles einwandfrei.
quelle
Sie haben dem Slave nicht mitgeteilt, welche Datenbank repliziert werden soll: Die Variable Replicate_Do_DB ist leer.
Versuchen Sie, die Zeile hinzuzufügen
replicate-do-db = name_of_db (wobei "name_of_db" der Name der zu replizierenden Datenbank ist)
in Ihrer my.cnf (auf Slave) und starten Sie den Slave-Server neu.
EDIT: Ich denke nicht, dass meine Antwort die richtige Lösung ist ;-)
Vielleicht schauen Sie sich stattdessen diese Seite an: http://dev.mysql.com/doc/refman/5.1/en/replication-problems.html
quelle
+------------------+----------+--------------+-------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+-------------------------+ | mysql-bin.000004 | 106 | | mysql,informationschema | +------------------+----------+--------------+-------------------------+
entry binlog_ignore_db = mysql binlog_ignore_db = informationschema