MySQL的relay log

從數(shù)據(jù)庫Slave服務(wù)的I/O線程從主數(shù)據(jù)庫Master服務(wù)的二進(jìn)制日志中讀取數(shù)據(jù)庫的更改記錄并寫入到中繼日志中载萌,然后在Slave數(shù)據(jù)庫執(zhí)行修改操作惧财。這就是中繼日志Relay Log。


image.png

RELAY LOG相關(guān)參數(shù)
max_relay_log_size
relay log 允許的最大值炒考,如果該值為0可缚,則默認(rèn)值為 max_binlog_size (1G);
如果不為0斋枢,則 max_relay_log_size 則為最大的relay_log文件大辛泵摇;

relay_log
定義 relay_log 的位置和名稱瓤帚,如果值為空描姚,則默認(rèn)位置在數(shù)據(jù)文件的目錄;

relay_log_index
定義 relay_log 索引的位置和名稱戈次,記錄有幾個(gè) relay_log 文件轩勘,默認(rèn)為2個(gè)

relay_log_info_file
定義 relay-log.info 的位置和名稱

relay_log_purge
是否自動(dòng)清空中繼日志,默認(rèn)值為1(啟用)怯邪;

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從庫上開啟該功能,建議開啟梯皿;

sync_relay_log
設(shè)置如何同步中繼日志到中繼日志文件仇箱。

當(dāng)sync_relay_log = 0時(shí),則MySQL服務(wù)不會(huì)對(duì)中繼日志文件進(jìn)行同步操作东羹,依賴于操作系統(tǒng)來定期進(jìn)行同步剂桥。
當(dāng)sync_relay_log = N(N>0),slave的I/O線程每次接收到master發(fā)送過來的binlog日志都要寫入系統(tǒng)緩沖區(qū)属提,每N個(gè)sync_relay_log事件后對(duì)中繼日志文件執(zhí)行一次同步(調(diào)用fdatasync())渊额。
sync_relay_log_info
用于設(shè)置如何將應(yīng)用中繼日志的位置信息同步到文件和表中,默認(rèn)參數(shù)為10000

當(dāng)sync_relay_log_info = FILE時(shí):
如果sync_relay_log_info=0垒拢,則MySQL服務(wù)不會(huì)對(duì)relay-log.info文件進(jìn)行同步操作,依賴于操作系統(tǒng)來定期進(jìn)行同步火惊。
如果sync_relay_log_info=N(N>0)求类,則每執(zhí)行N個(gè)事務(wù)后將信息使用fdatasync()同步到relay-log.info文件。
當(dāng)sync_relay_log_info = TABLE 且表mysql.slave_relay_log_info使用事務(wù)存儲(chǔ)引擎如Innodb:
在每次事務(wù)后都會(huì)更新mysql.slave_relay_log_info表的數(shù)據(jù)屹耐,忽略sync_relay_log_info的設(shè)置尸疆。
當(dāng)sync_relay_log_info = TABLE 且表mysql.slave_relay_log_info不使用存儲(chǔ)引擎如MyISAM:
如果sync_relay_log_info=0,則不更新表mysql.slave_relay_log_info的數(shù)據(jù)。
如果sync_relay_log_info=N(N>0)惶岭,則每執(zhí)行N個(gè)事務(wù)后更新表mysql.slave_relay_log_info的數(shù)據(jù)寿弱。
elay_log.info內(nèi)容同步至磁盤
設(shè)置如何保存從節(jié)點(diǎn)接收到的主庫BINLOG
sync_relay_log
設(shè)置如何同步中繼日志到中繼日志文件。
當(dāng)sync_relay_log = 0時(shí)按灶,則MySQL服務(wù)不會(huì)對(duì)中繼日志文件進(jìn)行同步操作症革,依賴于操作系統(tǒng)來定期進(jìn)行同步。
當(dāng)sync_relay_log = N(N>0)鸯旁,則每N個(gè)sync_relay_log事件后對(duì)中繼日志文件執(zhí)行一次同步(調(diào)用fdatasync())噪矛。
設(shè)置如何保存從節(jié)點(diǎn)接收主庫BINLOG的進(jìn)度信息
master_info_repository
用于設(shè)置如何保存從節(jié)點(diǎn)接收到主庫BINLOG的位點(diǎn)信息,可選參數(shù)可選參數(shù)值FILE|TABLE铺罢,默認(rèn)參數(shù)為FILE艇挨。
sync_master_info
參數(shù)值N(int),用于設(shè)置當(dāng)N次sync_master_info事件后將信息同步到文件或同步到表中,默認(rèn)參數(shù)值為1000
當(dāng)master_info_repository = FILE時(shí)韭赘,如果sync_master_info=0缩滨,則MySQL服務(wù)不會(huì)對(duì)master.info文件進(jìn)行同步操作,依賴于操作系統(tǒng)來定期進(jìn)行同步。
當(dāng)master_info_repository = TABLE時(shí)脉漏,如果sync_master_info=0苞冯,則MySQL服務(wù)不會(huì)更新mysql.slave_master_info的數(shù)據(jù)。
修改sync_master_info參數(shù)值不需要關(guān)閉復(fù)制進(jìn)程鸠删,修改即時(shí)生效抱完。

設(shè)置如何保存從節(jié)點(diǎn)上應(yīng)用RELAYLOG的進(jìn)度信息
relay_log_info_repository
用于設(shè)置如何保存從節(jié)點(diǎn)上應(yīng)用中繼日志的位置信息,可選參數(shù)可選參數(shù)值FILE|TABLE刃泡,默認(rèn)參數(shù)為FILE巧娱。

如果設(shè)置為FILE,信息存放到relay-log.info文件中烘贴,如果設(shè)置為TABLE禁添,信息存放到mysql.slave_relay_log_info中。
如果使用多源復(fù)制桨踪,必須使用TABLE參數(shù)值老翘。
修改relay_log_info_repository 參數(shù)的值需先關(guān)閉復(fù)制進(jìn)程再修改然后重啟復(fù)制線程。
sync_relay_log_info
用于設(shè)置如何將應(yīng)用中繼日志的位置信息同步到文件和表中锻离,默認(rèn)參數(shù)為10000

當(dāng)sync_relay_log_info = FILE時(shí):
如果sync_relay_log_info=0铺峭,則MySQL服務(wù)不會(huì)對(duì)relay-log.info文件進(jìn)行同步操作,依賴于操作系統(tǒng)來定期進(jìn)行同步汽纠。
如果sync_relay_log_info=N(N>0)卫键,則每執(zhí)行N個(gè)事務(wù)后將信息使用fdatasync()同步到relay-log.info文件。
當(dāng)sync_relay_log_info = TABLE 且表mysql.slave_relay_log_info使用事務(wù)存儲(chǔ)引擎如Innodb:
在每次事務(wù)后都會(huì)更新mysql.slave_relay_log_info表的數(shù)據(jù)虱朵,忽略sync_relay_log_info的設(shè)置莉炉。
當(dāng)sync_relay_log_info = TABLE 且表mysql.slave_relay_log_info不使用存儲(chǔ)引擎如MyISAM:
如果sync_relay_log_info=0,則不更新表mysql.slave_relay_log_info的數(shù)據(jù)。
如果sync_relay_log_info=N(N>0)碴犬,則每執(zhí)行N個(gè)事務(wù)后更新表mysql.slave_relay_log_info的數(shù)據(jù)絮宁。
設(shè)置如何恢復(fù)RELAY LOG
relay_log_recovery
用于設(shè)置在relay-log出現(xiàn)問題時(shí)如何修復(fù),默認(rèn)值為0(不開啟)
當(dāng)slave從庫宕機(jī)后服协,假如relay-log損壞了绍昂,導(dǎo)致一部分中繼日志沒有處理,則自動(dòng)放棄所有未執(zhí)行的relay-log偿荷,并且重新從master上獲取日志治专,這樣就保證了relay-log的完整性
當(dāng)MTS開啟后,如果設(shè)置relay_log_recovery=1遭顶,從節(jié)點(diǎn)意外重啟或被強(qiáng)制kill后重啟张峰,會(huì)有如下錯(cuò)誤:
relay-log-recovery cannot be executed when the slave was stopped with an error or killed in MTS mode
如果從節(jié)點(diǎn)上relay_log_info_repository= file 或sync_relay_log_info<>1時(shí),如果從節(jié)點(diǎn)發(fā)生故障重啟棒旗,就可能出現(xiàn)從節(jié)點(diǎn)已應(yīng)用第XXX條日志喘批,但relay_log_info中記錄的還是第XXX-N的位置撩荣,從節(jié)點(diǎn)從第XXX-N條日志進(jìn)行重做,這部分relay log被重復(fù)執(zhí)行饶深,報(bào)1032和1062的錯(cuò)誤餐曹,導(dǎo)致同步失敗。因此推薦進(jìn)行如下設(shè)置:

master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=1
1敌厘、由于設(shè)置relay_log_recovery=1台猴,當(dāng)Relay Log出現(xiàn)異常時(shí),能自動(dòng)恢復(fù)俱两,因此無需每次同步RALAY LOG都刷新進(jìn)度信息(sync_master_info)和每次將RALAY LOG刷新到磁盤(sync_relay_log)
2饱狂、由于設(shè)置relay_log_info_repository=TABLE,且表mysql.slave_relay_log_info默認(rèn)使用InnoDB存儲(chǔ)引擎宪彩,因?yàn)槊看螒?yīng)用RALAY LOG中的事件都會(huì)刷新mysql.slave_relay_log_info表數(shù)據(jù)休讳,忽略參數(shù)sync_master_info的設(shè)置。

RELAY LOG文件生成與刪除
Relaylog的生成:
寫入一個(gè)從Master端得到的event后尿孔,會(huì)判斷當(dāng)前文件是否超過max_relay_log_size俊柔,如果超過則生成一個(gè)新的relaylog

Relaylog的刪除:

當(dāng)SQL線程執(zhí)行完該Relaylog最后一個(gè)event后,會(huì)判斷該文件是否還需要保留活合,如果不需要保留雏婶,則刪除
在實(shí)例啟動(dòng)和flush logs時(shí),判斷relay log是否超過expire-log-days的限制白指,如果超過尚骄,則刪除
————————————————
版權(quán)聲明:本文為CSDN博主「FerryJC」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議侵续,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/jinhf10/article/details/110479269

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末憨闰,一起剝皮案震驚了整個(gè)濱河市状蜗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鹉动,老刑警劉巖轧坎,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異泽示,居然都是意外死亡缸血,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門械筛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捎泻,“玉大人,你說我怎么就攤上這事埋哟“驶恚” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長闯狱。 經(jīng)常有香客問我煞赢,道長,這世上最難降的妖魔是什么哄孤? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任照筑,我火速辦了婚禮,結(jié)果婚禮上瘦陈,老公的妹妹穿的比我還像新娘凝危。我一直安慰自己,他們只是感情好双饥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布媒抠。 她就那樣靜靜地躺著,像睡著了一般咏花。 火紅的嫁衣襯著肌膚如雪趴生。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天昏翰,我揣著相機(jī)與錄音苍匆,去河邊找鬼。 笑死棚菊,一個(gè)胖子當(dāng)著我的面吹牛浸踩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播统求,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼检碗,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了码邻?” 一聲冷哼從身側(cè)響起折剃,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎像屋,沒想到半個(gè)月后怕犁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡己莺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年奏甫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凌受。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阵子,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胜蛉,到底是詐尸還是另有隱情款筑,我是刑警寧澤智蝠,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站奈梳,受9級(jí)特大地震影響杈湾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜攘须,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一漆撞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧于宙,春花似錦浮驳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谱俭,卻和暖如春奉件,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昆著。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國打工县貌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凑懂。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓煤痕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親接谨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子摆碉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容