共計(jì) 2895 個(gè)字符,預(yù)計(jì)需要花費(fèi) 8 分鐘才能閱讀完成。
這篇文章主要講解了“解析 MySQL relay log 參數(shù)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學(xué)習(xí)“解析 MySQL relay log 參數(shù)”吧!
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 不會(huì)把從 master 接收到的 binlog 記錄寫入自己的 binlog,這個(gè)參數(shù)會(huì)使 slave 通過 SQL 線程把從 master 接受到的 binlog 寫進(jìn)自己的 binlog,但是前提是 slave 一定要開啟自己的 binlog,此參數(shù)一般用于級(jí)聯(lián)復(fù)制,例如需要 A 復(fù)制到 B,B 復(fù)制到 C,那么 B 就要開啟此參數(shù)。
max_relay_log_size:
標(biāo)記 relay log 允許的最大值,如果該值為 0,則默認(rèn)值為 max_binlog_size(1G);如果不為 0,則 max_relay_log_size 則為
最大的 relay_log 文件大小;
relay_log:
定義 relay_log 的位置和名稱,如果值為空,則默認(rèn)位置在數(shù)據(jù)文件的目錄(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:
中轉(zhuǎn)日志文件的名稱和路徑。
relay_log_index:
同 relay_log,定義 relay_log 的位置和名稱;一般和 relay-log 在同一目錄
relay_log_info_file:
設(shè)置 relay-log.info 的位置和名稱(relay-log.info 記錄 MASTER 的 binary_log 的恢復(fù)位置和 relay_log 的位置)
relay_log_info_repository :
確定 從的 relay_log 位置放在 FILE(relay-log.info) 還是 TABLE (mysql.slave_relay_log_info),保證數(shù)據(jù)寫入的一致性
relay_log_purge:
開啟或關(guān)閉在不需要的時(shí)候自動(dòng)刪除中轉(zhuǎn)日志。默認(rèn)開啟 (1),這是個(gè)全局變量,可以通過 SET GLOBAL relay_log_purge =
N 動(dòng)態(tài)設(shè)置。
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 從庫上開啟該功能,建議開啟。
relay_log_space_limit:
防止中繼日志寫滿磁盤,這里設(shè)置中繼日志最大限額。但此設(shè)置存在主庫崩潰,從庫中繼日志不全的情況,不到萬不得
已,不推薦使用;
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)值。
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)值。
推薦從庫線上環(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 來定期清除。
感謝各位的閱讀,以上就是“解析 MySQL relay log 參數(shù)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)解析 MySQL relay log 參數(shù)這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!