Saya memiliki setup replikasi Master-Slave dan sepertinya itu berjalan dengan baik. Di bawah ini adalah hasil dari SHOW SLAVE STATUS
perintah:
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:
Saya ingin memahami lebih jauh tentang Relay_Log_File
, Relay_Log_Pos
dan Relay_Master_Log_File
.
Pertanyaan saya adalah:
Benarkah file log relay adalah file yang sedang dibaca dan disimpan secara lokal untuk menjalankan replikasi?
Bagaimana dengan
relay_master_log_file
itu; bagaimana bedanya denganMaster_Log_File
?Apa saja nilai-nilai ini, yaitu. ,
Read_Master_Log_Pos
danRelay_Log_Pos
? Mengapa mereka muncul meskipun replikasi lengkap dan sinkron?Benarkah file-file ini dalam format biner, dan karenanya saya tidak dapat melihatnya?
sumber
Relay_Master_Log_File
adalah nama file master log biner yang berisi peristiwa terbaru yang dieksekusi oleh untaian SQL, bukan file log relai .Relay_Master_Log_File
sebenarnya nama binlog pada master yang berisi pernyataan SQL terakhir yang berhasil dieksekusi pada slave. Itu bukan nama log relai pada budak. Lihat: http://dev.mysql.com/doc/refman/5.5/id/show-slave-status.htmlExec_Master_Log_Pos
adalah posisi di relay_master_log_file yang dijalankan oleh slave SQL thread. Jadi pada contoh Anda, slave db telah mengeksekusi semua pernyataan hingga binlogmysql-bin.000001
pos 10726644 pada master db.until_log_pos
benar-benar hanya digunakan jika Anda memulai budak Anda dengan sintaksSTART SLAVE UNTIL master_log_pos = $integer
. Sintaks itu akan mereplikasi hingga posisi itu (itu akan menjadiexec_master_log_pos
) dan kemudian berhenti. Anda biasanya hanya akan melakukan ini jika Anda ingin mereplikasi ke titik tertentu, tetapi tidak lebih jauh (seperti jika pernyataan berikutnya adalah drop tabel disengaja atau sesuatu). Nilaiuntil_log_pos
0 ketika tidak ditentukan, jadi dalam kasus Anda berarti replikasi akan terus bergerak maju.sumber