MySQL relay log 详细参数解释
? ?前言:MySQL進(jìn)行主主復(fù)制或主從復(fù)制的時(shí)候會(huì)在home目錄下面產(chǎn)生相應(yīng)的relay log,本文檔總結(jié)這些相關(guān)參數(shù)的定義及解釋.
1、什么是relay log
The relay log, like the binary log, consists of a set of numbered files containing events that describe database changes, and an index file that contains the names of all used relay log files.
The term "relay log file" generally denotes an individual numbered file containing database events. The term"relay log" collectively denotes the set of numbered relay log files plus the index file
來源: <http://dev.mysql.com/doc/refman/5.5/en/slave-logs-relaylog.html>
理解:relay log很多方面都跟binary log差不多。
區(qū)別是:從服務(wù)器I/O線程將主服務(wù)器的二進(jìn)制日志讀取過來記錄到從服務(wù)器本地文件,然后SQL線程會(huì)讀取relay-log日志的內(nèi)容并應(yīng)用到從服務(wù)器,從而使從服務(wù)器和主服務(wù)器的數(shù)據(jù)保持一致
2、relay log的相關(guān)參數(shù)說明
通過語句:show variables like '%relay%',查看先骨干的relay的所有相關(guān)參數(shù)
mysql> show variables like '%relay%';
+-----------------------+----------------+
| Variable_name | Value |
+-----------------------+----------------+
| max_relay_log_size ? ? ? ?
| relay_log ? ? ? ? ? ? ? ??
| relay_log_basename ? ? ??
| relay_log_index ? ? ? ? ?
| relay_log_info_file ? ? ? ?
| relay_log_info_repository ?
| relay_log_purge ? ? ? ? ? ?
| relay_log_recovery ? ? ? ??
| relay_log_space_limit ? ??
| sync_relay_log ? ? ? ? ? ? ??
| sync_relay_log_info ?
? ? ??
+-----------------------+----------------+
參數(shù)詳細(xì)解釋:
2.1 max_relay_log_size:
標(biāo)記relay log 允許的最大值,如果該值為0,則默認(rèn)值為max_binlog_size(1G);如果不為0,則max_relay_log_size則為最大的relay_log文件大小;
2.2 ?relay_log:
定義relay_log的位置和名稱,如果值為空,則默認(rèn)位置在數(shù)據(jù)文件的目錄(datadir),文件名為host_name-relay-bin.nnnnnn(By default, relay log file names have the form host_name-relay-bin.nnnnnn in the data directory);
2.3 relay_log_index:
同relay_log,定義relay_log的位置和名稱;一般和relay-log在同一目錄
2.4 relay_log_info_file:
設(shè)置relay-log.info的位置和名稱(relay-log.info記錄MASTER的binary_log的恢復(fù)位置和relay_log的位置)
2.5 relay_log_purge:
是否自動(dòng)清空不再需要中繼日志時(shí)。默認(rèn)值為1(啟用)。
2.6 relay_log_recovery:
當(dāng)slave從庫宕機(jī)后,假如relay-log損壞了,導(dǎo)致一部分中繼日志沒有處理,則自動(dòng)放棄所有未執(zhí)行的relay-log,并且重新從master上獲取日志,這樣就保證了relay-log的完整性。默認(rèn)情況下該功能是關(guān)閉的,將relay_log_recovery的值設(shè)置為 1時(shí),可在slave從庫上開啟該功能,建議開啟。
2.7 relay_log_space_limit:
防止中繼日志寫滿磁盤,這里設(shè)置中繼日志最大限額。但此設(shè)置存在主庫崩潰,從庫中繼日志不全的情況,不到萬不得已,不推薦使用;
2.8 sync_relay_log:
這個(gè)參數(shù)和sync_binlog是一樣的,
當(dāng)設(shè)置為1時(shí),slave的I/O線程每次接收到master發(fā)送過來的binlog日志都要寫入系統(tǒng)緩沖區(qū),然后刷入relay log中繼日志里,這樣是最安全的,因?yàn)樵诒罎⒌臅r(shí)候,你最多會(huì)丟失一個(gè)事務(wù),但會(huì)造成磁盤的大量I/O。
當(dāng)設(shè)置為0時(shí),并不是馬上就刷入中繼日志里,而是由操作系統(tǒng)決定何時(shí)來寫入,雖然安全性降低了,但減少了大量的磁盤I/O操作。這個(gè)值默認(rèn)是0,可動(dòng)態(tài)修改,建議采用默認(rèn)值。
2.9 sync_relay_log_info:
這個(gè)參數(shù)和sync_relay_log參數(shù)一樣,當(dāng)設(shè)置為1時(shí),slave的I/O線程每次接收到master發(fā)送過來的binlog日志都要寫入系統(tǒng)緩沖區(qū),然后刷入relay-log.info里,這樣是最安全的,因?yàn)樵诒罎⒌臅r(shí)候,你最多會(huì)丟失一個(gè)事務(wù),但會(huì)造成磁盤的大量I/O。當(dāng)設(shè)置為0時(shí),并不是馬上就刷入relay-log.info里,而是由操作系統(tǒng)決定何時(shí)來寫入,雖然安全性降低了,但減少了大量的磁盤I/O操作。這個(gè)值默認(rèn)是0,可動(dòng)態(tài)修改,建議采用默認(rèn)值。
3、總結(jié):以上只是簡單的介紹了每個(gè)參數(shù)的作用,這些參數(shù)具體的設(shè)置還是需要根據(jù)每個(gè)用戶的實(shí)際系統(tǒng)情況進(jìn)行設(shè)置的;
推薦從庫線上環(huán)境使用以下配置
#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環(huán)境,則| relay_log_purge 不要開啟,設(shè)置為0,可以使用?purge_relay_logs 來定期清除
參考鏈接:
http://douya.blog.51cto.com/6173221/1788772
轉(zhuǎn)載于:https://blog.51cto.com/douya/1788753
總結(jié)
以上是生活随笔為你收集整理的MySQL relay log 详细参数解释的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 HP 3PAR Peer Pers
- 下一篇: MySQL案例分析--QueryCach