我們知道鞭光,寫(xiě)二進(jìn)制日志與master數(shù)據(jù)庫(kù)中的數(shù)據(jù)變化并不是一一對(duì)應(yīng)的關(guān)系噪窘。要保持?jǐn)?shù)據(jù)庫(kù)和二進(jìn)制日志之間的一致性笋庄,以防系統(tǒng)崩潰,就是要做到倔监,如果更新沒(méi)有寫(xiě)入二進(jìn)制日志直砂,就不會(huì)被提交到存儲(chǔ)引擎,反之亦然浩习。
sync-binlog選項(xiàng)可控制數(shù)據(jù)寫(xiě)入磁盤(pán)的頻率静暂,其值是一個(gè)整數(shù),指定二進(jìn)制日志寫(xiě)入磁盤(pán)的頻率瘦锹,以每提交語(yǔ)句或事務(wù)的次數(shù)為準(zhǔn)籍嘹,默認(rèn)值為0,由操作系統(tǒng)決定弯院。在5.6中辱士,由于引入了二進(jìn)制日志組提交,所以sync以提交組為單位听绳,而不是按事務(wù)或語(yǔ)句颂碘。對(duì)于像InnoDB引擎,將sync-binlog=1椅挣,一般情況下操作系統(tǒng)的崩潰不會(huì)丟失事務(wù)头岔,不支持事務(wù)的引擎,可能至少丟失一個(gè)事務(wù)鼠证。
有4種行為會(huì)導(dǎo)致二進(jìn)制日志文件輪換峡竣,第一服務(wù)器停止,每次服務(wù)器啟動(dòng)都會(huì)開(kāi)始一個(gè)新的二進(jìn)制日志量九。第二适掰,binlog文件大小達(dá)到最大限制颂碧,可以通過(guò)binlog-cache-size來(lái)控制binlog文件的大小。第三类浪,二進(jìn)制日志被顯示刷新载城,flush logs命令將所有日志寫(xiě)入磁盤(pán),然后創(chuàng)建一個(gè)新的文件繼續(xù)寫(xiě)二進(jìn)制日志费就。第四诉瓦,服務(wù)器上發(fā)生故障,除了完全停止工作以外力细,服務(wù)器還可能遇到其他事故睬澡,從而導(dǎo)致二進(jìn)制日志被輪換。
通過(guò)設(shè)置expire-logs-days選項(xiàng)艳汽,服務(wù)器可以自動(dòng)清除舊的binlog文件猴贰。這個(gè)選項(xiàng)也可以用作服務(wù)器變量,其值為存儲(chǔ)binlog文件的天數(shù)河狐。也可以手工清除binlog文件米绕,可使用purge binary logs命令。
purgebinary logs before datetime馋艺,清除給定時(shí)間之前的所有文件栅干。
purgebinary logs to ‘filename’清除給定文件前的所有文件。
清除文件的過(guò)程是捐祠,首先將那些服務(wù)器認(rèn)為電動(dòng)機(jī)成熟的文件寫(xiě)到清除索引文件碱鳞,然后,將文件從文件系統(tǒng)中刪除踱蛀,最后刪除清除索引文件窿给。