Ich habe ein Master-Slave-Replikationssetup und es sieht so aus, als ob es gut läuft. Unten ist ein Ergebnis des SHOW SLAVE STATUS
Befehls:
show slave STATUS\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: *.*.*.*
Master_User: repliV1
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 10726644
Relay_Log_File: mysqld-relay-bin.000056
Relay_Log_Pos: 231871
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: data1
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: 10726644
Relay_Log_Space: 232172
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:
Ich möchte gerne mehr über das verstehen Relay_Log_File
, Relay_Log_Pos
und Relay_Master_Log_File
.
Meine Fragen sind:
Stimmt es, dass die Relay-Protokolldatei lokal gelesen und gespeichert wird, damit die Replikation ausgeführt werden kann?
Was ist mit dem
relay_master_log_file
damals ? Wie unterscheidet es sich von derMaster_Log_File
?Was sind diese beiden Werte, nämlich. ,
Read_Master_Log_Pos
UndRelay_Log_Pos
? Warum werden sie angezeigt, obwohl die Replikation abgeschlossen und synchron ist?Stimmt es, dass diese Dateien im Binärformat vorliegen und ich sie daher nicht anzeigen kann?
quelle
Relay_Master_Log_File
ist der Name der Master-Binärprotokolldatei , die das letzte vom SQL-Thread ausgeführte Ereignis enthält, nicht die Relay-Protokolldatei .Relay_Master_Log_File
ist eigentlich der Name des binlog auf dem Master, der die letzte SQL-Anweisung enthält, die erfolgreich auf dem Slave ausgeführt wurde. Es ist nicht der Name eines Relaisprotokolls auf dem Slave. Siehe: http://dev.mysql.com/doc/refman/5.5/en/show-slave-status.htmlExec_Master_Log_Pos
ist die Position in der Datei release_master_log_file, bis zu der der Slave-SQL-Thread ausgeführt wurde. In Ihrem Beispiel hat die Slave-Datenbank alle Anweisungen bis zum binlogmysql-bin.000001
pos 10726644 auf der Master-Datenbank ausgeführt .until_log_pos
wird wirklich nur verwendet, wenn Sie Ihren Slave mit der Syntax startenSTART SLAVE UNTIL master_log_pos = $integer
. Diese Syntax wird bis zu dieser Position repliziert (es wird die seinexec_master_log_pos
) und dann gestoppt. Normalerweise tun Sie dies nur, wenn Sie zu einem bestimmten Punkt replizieren möchten, aber nicht weiter (z. B. wenn die nächste Anweisung ein versehentliches Löschen einer Tabelle oder etwas anderes ist). Der Wert vonuntil_log_pos
ist 0, wenn er nicht angegeben ist. In Ihrem Fall bedeutet dies, dass die Replikation einfach weitergeht.quelle