Ich habe MySQL (5.5) im Master-Slave-Setup und einen anderen Slave-Server erstellt.
Ich habe den ursprünglichen Slave gestoppt, die Daten gelöscht, kopiert und wieder importiert und es hat gut funktioniert. Ich habe die master_log-Position des ursprünglichen Slaves notiert und diese Befehle verwendet, um sie für den neuen Slave festzulegen
CHANGE MASTER TO MASTER_HOST='<ipaddress>',
MASTER_USER='<username>', MASTER_PASSWORD='<password>',
MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000851',
MASTER_LOG_POS=15824150,
MASTER_CONNECT_RETRY=10;
Als ich mit dem neuen Sklaven anfing, bekam ich
Last_IO_Error: Schwerwiegender Fehler 1236 vom Master beim Lesen von Daten aus dem Binärlog: 'Logereignis-Eintrag überschritten max_allowed_packet; Erhöhe max_allowed_packet auf master '
Als ich den ursprünglichen Sklaven startete, holte er jedoch gut auf und ist jetzt synchronisiert.
Also die Fragen:
Der aktuelle Wert ist 16 Millionen. Woher weiß ich, wie groß der Rest sein muss? (Ich würde lieber das Ausprobieren mit einem Produktionsserver vermeiden).
Warum muss ich den Wert auf dem Master erhöhen, wenn der ursprüngliche Slave einwandfrei funktioniert hat? Kann das Problem wirklich beim neuen Slave liegen?
aktualisieren
Ich erhöhte das max_allowed_packet auf 1073741824, als Rolando den Master, den alten und den neuen Slave vorschlug, und startete sie neu ( SET GLOBAL max_allowed_packet = 1073741824;
aus irgendeinem Grund schien es nicht zu dauern)
jetzt ist der letzte E / A-Fehler derselbe wie zuvor, aber jetzt sehe ich
Last_SQL_Error: Fehler beim Lesen des Relaisprotokolls: Der Ereigniseintrag des Relaisprotokolls konnte nicht analysiert werden. Mögliche Gründe sind: Das Binärlog des Masters ist beschädigt (Sie können dies überprüfen, indem Sie im Binärlog 'mysqlbinlog' ausführen), das Relay-Log des Slaves ist beschädigt (Sie können dies überprüfen, indem Sie im Relay-Log 'mysqlbinlog' ausführen), a Netzwerkproblem oder ein Fehler im MySQL-Code des Masters oder Slaves. Wenn Sie das Binärprotokoll des Masters oder das Relaisprotokoll des Slaves überprüfen möchten, können Sie deren Namen ermitteln, indem Sie für diesen Slave die Meldung 'SHOW SLAVE STATUS' ausgeben.
Wenn ich ein mysqlbinlog für die Master-Datei mache, scrollt es mit Befehlen ziemlich glücklich für Ewigkeiten vorbei - die Datei ist 722M groß - wenn ich das für das Slave-Relay-Protokoll mache, das ich erhalte
FEHLER: Fehler in Log_event :: read_log_event (): 'Überprüfung der Datenqualität fehlgeschlagen', data_len: 38916267, event_type: 69
FEHLER: Eintrag bei Offset 253 konnte nicht gelesen werden: Fehler im Protokollformat oder Lesefehler.
Ich habe die Variablen überprüft und die Änderungen haben jedoch funktioniert
mysql> show variables LIKE '% max_allowed_packet%';
auf dem neuen sklaven zeigte max_allowed_packet
UNDslave_max_allowed_packet
wo wie auf dem master es nur hatmax_allowed_packet
Also habe ich den Master einer Versionsprüfung unterzogen:
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 1.1.6 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.11-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
und auf den neuen sklaven
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 5.5.32 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.32-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
Sind diese beiden Versionen zu weit voneinander entfernt?