MySQL relay log 詳細引數解釋

不一樣的天空w發表於2019-08-23

root@db 16:12:  [(none)]> show variables like '%relay%';

+---------------------------+--------------------------------------+

| Variable_name             | Value                                |

+---------------------------+--------------------------------------+

| max_relay_log_size        | 0                                    |

| relay_log                 |                                      |

| relay_log_basename        | /data/mysql/node2bak-relay-bin       |

| relay_log_index           | /data/mysql/node2bak-relay-bin.index |

| relay_log_info_file       | relay-log.info                       |

| relay_log_info_repository | TABLE                                |

| relay_log_purge           | ON                                   |

| relay_log_recovery        | ON                                   |

| relay_log_space_limit     | 0                                    |

| sync_relay_log            | 10000                                |

| sync_relay_log_info       | 10000                                |

+---------------------------+--------------------------------------+

11 rows in set (0.00 sec)


root@db 16:12:  [(none)]> 


log-slave-updates:

一般情況下slave不會把從master接收到的binlog記錄寫入自己的binlog,這個引數會使slave透過SQL執行緒把從master接受到的binlog寫進自己的binlog,但是前提是slave一定要開啟自己的binlog,此引數一般用於級聯複製,例如需要A複製到B,B複製到C,那麼B就要開啟此引數。


max_relay_log_size:

標記relay log 允許的最大值,如果該值為0,則預設值為max_binlog_size(1G);如果不為0,則max_relay_log_size則為

最大的relay_log檔案大小;


relay_log:

定義relay_log的位置和名稱,如果值為空,則預設位置在資料檔案的目錄(datadir),檔名為host_name-relay-bin.nn

nnnn(By default, relay log file names have the form host_name-relay-bin.nnnnnn in the data directory);


relay_log_basename:

中轉日誌檔案的名稱和路徑。


relay_log_index:

同relay_log,定義relay_log的位置和名稱;一般和relay-log在同一目錄


relay_log_info_file:

設定relay-log.info的位置和名稱(relay-log.info記錄MASTER的binary_log的恢復位置和relay_log的位置)


relay_log_info_repository  :

確定 從的 relay_log 位置放在 FILE ( relay-log.info  還是 TABLE (mysql.slave_relay_log_info),保證資料寫入的一致性


relay_log_purge:

開啟或關閉在不需要的時候自動刪除中轉日誌。預設開啟(1),這是個全域性變數,可以透過 SET GLOBAL relay_log_purge =

 N 動態設定。


relay_log_recovery:

當slave從庫當機後,假如relay-log損壞了,導致一部分中繼日誌沒有處理,則自動放棄所有未執行的relay-log,並且重新

從master上獲取日誌,這樣就保證了relay-log的完整性。預設情況下該功能是關閉的,將relay_log_recovery的值設定為 1

時,可在slave從庫上開啟該功能,建議開啟。


relay_log_space_limit:

防止中繼日誌寫滿磁碟,這裡設定中繼日誌最大限額。但此設定存在主庫崩潰,從庫中繼日誌不全的情況,不到萬不得

已,不推薦使用;


sync_relay_log:

這個引數和sync_binlog是一樣的,當設定為1時,slave的I/O執行緒每次接收到master傳送過來的binlog日誌都要寫入系統

緩衝區,然後刷入relay log中繼日誌裡,這樣是最安全的,因為在崩潰的時候,你最多會丟失一個事務,但會造成磁碟的

大量I/O。

當設定為0時,並不是馬上就刷入中繼日誌裡,而是由作業系統決定何時來寫入,雖然安全性降低了,但減少了大量的磁

盤I/O操作。這個值預設是0,可動態修改,建議採用預設值。


sync_relay_log_info:

這個引數和sync_relay_log引數一樣,當設定為1時,slave的I/O執行緒每次接收到master傳送過來的binlog日誌都要寫入

系統緩衝區,然後刷入relay-log.info裡,這樣是最安全的,因為在崩潰的時候,你最多會丟失一個事務,但會造成磁碟

的大量I/O。當設定為0時,並不是馬上就刷入relay-log.info裡,而是由作業系統決定何時來寫入,雖然安全性降低了,但

減少了大量的磁碟I/O操作。這個值預設是0,可動態修改,建議採用預設值。


推薦從庫線上環境使用以下配置

#relay log

max_relay_log_size = 0;

relay_log=$datadir/relay-bin

relay_log_purge = 1;

relay_log_recovery = 1;

sync_relay_log =0;

sync_relay_log_info = 0;


如果是mha環境,則relay_log_purge 不要開啟,設定為0,可以使用 purge_relay_logs 來定期清除。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2654677/,如需轉載,請註明出處,否則將追究法律責任。

相關文章