top
Loading...
6.3.4.復制傳遞和狀態文件
6.3.4. 復制傳遞和狀態文件

默認情況,中繼日志使用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 LOGSmysqladmin flush-logs

·         當當前的中繼日志文件變得太大時。“太大”含義的確定方法:

o        max_relay_log_size,如果max_relay_log_size > 0

o        max_binlog_size,如果max_relay_log_size = 0

從屬復制服務器在數據目錄中另外創建兩個小文件。這些狀態文件默認名為主master.inforelay-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_FileMaster_LOG_POS選項執行CHANGE MASTER TO來告訴從服務器重新從該點讀取二進制日志。當然,要求二進制日志仍然在主服務器上。

如果從服務器正復制LOAD DATA INFILE語句,你應也備份該目錄內從服務器用于該目的的任何SQL_LOAD-*文件。從服務器需要這些文件繼續復制任何中斷的LOAD DATA INFILE操作。用--slave-load-tmpdir選項來指定目錄的位置。如果未指定, 默認值為tmpdir變量的值。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/replication.html
北斗有巢氏 有巢氏北斗