默認情況,中繼日志使用host_name-relay-bin.nnnnnn形式的文件名,其中host_name是從服務器主機名,nnnnnn是序列號。用連續序列號來創建連續中繼日志文件,從000001開始。從服務器跟蹤索引文件中目前正使用的中繼日志。 默認中繼日志索引文件名為host_name-relay-bin.index。默認情況,在從服務器的數據目錄中創建這些文件。可以用--relay-log和--relay-log-index服務器選項覆蓋 默認文件名。參見6.8節,“復制啟動選項”。
中繼日志與二進制日志的格式相同,并且可以用mysqlbinlog讀取。SQL線程執行完中繼日志中的所有事件并且不再需要之后,立即自動刪除它。沒有直接的刪除中繼日志的機制,因為SQL線程可以負責完成。然而,FLUSH LOGS可以循環中繼日志,當SQL線程刪除日志時會有影響。
在下面的條件下創建新的中繼日志:
· 每次I/O線程啟動時創建一個新的中繼日志。
· 當日志被刷新時;例如,用FLUSH LOGS或mysqladmin flush-logs。
· 當當前的中繼日志文件變得太大時。“太大”含義的確定方法:
o max_relay_log_size,如果max_relay_log_size > 0
o max_binlog_size,如果max_relay_log_size = 0
從屬復制服務器在數據目錄中另外創建兩個小文件。這些狀態文件默認名為主master.info和relay-log.info。它們包含SHOW SLAVE STATUS語句的輸出所顯示的信息(關于該語句的描述參見13.6.2節,“用于控制從服務器的SQL語句”)。狀態文件保存在硬盤上,從服務器關閉時不會丟失。下次從服務器啟動時,讀取這些文件以確定它已經從主服務器讀取了多少二進制日志,以及處理自己的中繼日志的程度。
由I/O線程更新master.info文件。文件中的行和SHOW SLAVE STATUS顯示的列的對應關系為:
行 |
描述 |
1 |
文件中的行號 |
2 |
Master_Log_File |
3 |
Read_Master_Log_Pos |
4 |
Master_Host |
5 |
Master_User |
6 |
密碼(不由SHOW SLAVE STATUS顯示) |
7 |
Master_Port |
8 |
Connect_Retry |
9 |
Master_SSL_Allowed |
10 |
Master_SSL_CA_File |
11 |
Master_SSL_CA_Path |
12 |
Master_SSL_Cert |
13 |
Master_SSL_Cipher |
14 |
Master_SSL_Key |
由SQL線程更新relay-log.info文件。文件中的行和SHOW SLAVE STATUS顯示的列的對應關系為:
行 |
描述 |
1 |
Relay_Log_File |
2 |
Relay_Log_Pos |
3 |
Relay_Master_Log_File |
4 |
Exec_Master_Log_Pos |
當備份從服務器的數據時,你還應備份這兩個小文件以及中繼日志文件。它們用來在恢復從服務器的數據后繼續進行復制。如果丟失了中繼日志但仍然有relay-log.info文件,你可以通過檢查該文件來確定SQL線程已經執行的主服務器中二進制日志的程度。然后可以用Master_Log_File和Master_LOG_POS選項執行CHANGE MASTER TO來告訴從服務器重新從該點讀取二進制日志。當然,要求二進制日志仍然在主服務器上。
如果從服務器正復制LOAD DATA INFILE語句,你應也備份該目錄內從服務器用于該目的的任何SQL_LOAD-*文件。從服務器需要這些文件繼續復制任何中斷的LOAD DATA INFILE操作。用--slave-load-tmpdir選項來指定目錄的位置。如果未指定, 默認值為tmpdir變量的值。