Mam konfigurację replikacji Master-Slave i wygląda na to, że działa dobrze. Poniżej znajduje się wynik SHOW SLAVE STATUS
polecenia:
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:
Chciałbym lepiej zrozumieć o Relay_Log_File
, Relay_Log_Pos
i Relay_Master_Log_File
.
Moje pytania to:
Czy to prawda, że plik dziennika przekazywania jest tym, który jest odczytywany i przechowywany lokalnie w celu uruchomienia replikacji?
Co
relay_master_log_file
wtedy? czym różni się odMaster_Log_File
?Jakie są obie te wartości, a mianowicie. ,
Read_Master_Log_Pos
IRelay_Log_Pos
? Dlaczego są wyświetlane, mimo że replikacja jest zakończona i zsynchronizowana?Czy to prawda, że te pliki są w formacie binarnym, a zatem nie mogę ich wyświetlić?
źródło
Relay_Master_Log_File
to nazwa głównego binarnego pliku dziennika zawierającego ostatnie zdarzenie wykonane przez wątek SQL, a nie plik dziennika przekazywania .Relay_Master_Log_File
jest w rzeczywistości nazwą binlogu na urządzeniu głównym zawierającym ostatnią instrukcję SQL wykonaną pomyślnie na urządzeniu podrzędnym. To nie jest nazwa dziennika przekazywania na urządzeniu slave. Zobacz: http://dev.mysql.com/doc/refman/5.5/en/show-slave-status.htmlExec_Master_Log_Pos
to pozycja w pliku przekaźnika_magazyn, do której wykonał niewolny wątek SQL. Tak więc w twoim przykładzie slave db wykonał wszystkie instrukcje aż do binlogmysql-bin.000001
pos 10726644 na master db.until_log_pos
jest używany tylko wtedy, gdy uruchamiasz swój slave ze składniąSTART SLAVE UNTIL master_log_pos = $integer
. Ta składnia zostanie zreplikowana do tej pozycji (będzie toexec_master_log_pos
), a następnie zatrzyma się. Zwykle robiłbyś to tylko, jeśli chcesz replikować do określonego punktu, ale nic więcej (na przykład, jeśli następna instrukcja jest przypadkowym upuszczeniem tabeli lub coś takiego). Wartośćuntil_log_pos
wynosi 0, jeśli nie jest określona, więc w twoim przypadku oznacza to, że replikacja będzie po prostu iść naprzód.źródło