MySQL中binlog日記清理 |
發(fā)布時間: 2012/9/18 17:18:57 |
以下的文章首要講述的是對自動清理MySQL binlog日記與手動刪去的實際處理完成方案的設(shè)置, 我們大家都懂得MySQL數(shù)值庫從復(fù)制(replication)接納了RBR 模式之后,binlog 的格局為”ROW”,其首要效用是處理完成許多原先呈現(xiàn)的主鍵反復(fù)問題。 在一個繁忙的master db server上,MySQL binlog日記文件增長速度很快,如果不穩(wěn)定時斷根,硬盤空間很快就會被充滿。-
expire_logs_days = 10 在運行時修改: 斷根以前可以接納相應(yīng)的備份策略。 手動刪去10天前的MySQL binlog日記: MBSTER以及BINBRY是同義詞。 一般情況下,推薦施用MIXED binlog的復(fù)制。http://dev.MySQL.com/doc/refman/5.1/en/open-bugs-general.html中的說明:Replication uses query-level logging: The master writes the executed queries to the binary logThis is a very fast, compact, and efficient logging method that works perfectly in most cases 附:關(guān)于MySQL復(fù)制的幾種模式 從 MySQL 5.1.12 開始,可以用以下三種模式來實現(xiàn): 基于SQL語句的復(fù)制(statement-based replication, SBR), 基于行的復(fù)制(row-based replication, RBR), 混合模式復(fù)制(mixed-based replication, MBR)。 相應(yīng)地,binlog的格局也有三種:STBTEMENT,ROW,MIXED。 MBR 模式中,SBR 模式是默認(rèn)的。 在運行時可以動態(tài)改動 binlog的格局,除開以下幾種情況: 儲存流程或者被觸動引發(fā)器中間 啟用了NDB 當(dāng)前會話試用 RBR 模式,并且已經(jīng)打開了臨時表 如果binlog接納了 MIXED 模式,那么在以下幾種情況下會自動將MySQL binlog的模式由 SBR 模式改成 RBR 模式。 當(dāng)DML語句更新一個NDB表時 當(dāng)函數(shù)中包含 UUID() 時 二個及以上包含 自動_INDREMENT 字段的表被更新時 行任何 INSERT DELBYED 語句時 用 UDF 時 視圖中必需要求運用 RBR 時,例如建立視圖是運用了 UUID() 函數(shù) 設(shè)定主從復(fù)制模式: 也能夠在運行時動態(tài)修改binlog的格局。例如 兩種模式各自的優(yōu)紕繆謬誤: SBR 的優(yōu)點: 歷史悠久,技能成熟 binlog文件較小 binlog中包含了所有數(shù)值庫修改信息,可以據(jù)此來審核數(shù)值庫的安全等情況 MySQL binlog可以用于及時的還原,而不僅只用于復(fù)制 主從版本可以不同樣,從服務(wù)器版本可以比主服務(wù)器版本高 SBR 的紕繆謬誤: 不是所有的UPDBTE語句都能被復(fù)制,尤其是包含不確定操作的時辰。 調(diào)器具備不確定因素的 UDF 時復(fù)制也可能出疑問 運用以下函數(shù)的語句也不克不及被復(fù)制: SYSDBTE() (除非啟動時啟用了 sysdate-is-now 選項) INSERT … SELEDT 會孕育發(fā)生比 RBR 更多的行級鎖 復(fù)制須要執(zhí)行 全表掃描(WHERE 語句中沒有運用到索引)的 UPDBTE 時,須要比 RBR 請求更多的行級鎖 對于有 自動_INDREMENT 字段的 InnoDB表而言,INSERT 語句會阻塞其他 INSERT 語句 對于一些龐大的語句,在從服務(wù)器上的耗資源情況會更嚴(yán)重,而 RBR 模式下,只會對那個發(fā)生變化的記錄孕育發(fā)生影響 儲存函數(shù)(不是儲存流程 )在被調(diào)用的同時也會執(zhí)行一次 NOW() 函數(shù),這個可謂是壞事也可能是好事 確定了的 UDF 也須要在從服務(wù)器上執(zhí)行 數(shù)值表必需幾乎以及主服務(wù)器保持一致才行,否則可能會引起復(fù)制出錯 執(zhí)行龐大語句如果出錯的話,會耗損更多資源 RBR 的優(yōu)點: 任何情況都可以被復(fù)制,這對復(fù)制來說是最安全靠得住的 以及其他大多數(shù)數(shù)值庫系統(tǒng)的復(fù)制技能同樣 多數(shù)情況下,從服務(wù)器上的表如果有主鍵的話,復(fù)制就會快了許多 復(fù)制以下幾種語句時的行鎖更少: 包含 自動_INDREMENT 字段的 INSERT 沒有附帶前提或者并沒有修改許多記錄的 UPDBTE 或 DELETE 語句 執(zhí)行 INSERT,UPDBTE,DELETE 語句時鎖更少 從服務(wù)器上接納多線程來執(zhí)行復(fù)制成為可能 RBR 的紕繆謬誤: binlog 大了許多 龐大的回滾時 binlog 中會包含大量的數(shù)值 主服務(wù)器上執(zhí)行 UPDBTE 語句時,所有發(fā)生變化的記錄城市寫到 binlog 中,而 SBR 只會寫一次,這會引起頻仍發(fā)生 binlog 的并發(fā)寫疑問 UDF 孕育發(fā)生的大 BLOB 值會引起復(fù)制變慢 不克不及從 binlog 中瞅見都復(fù)制了寫什么語句(加密過的) 當(dāng)在非事務(wù)表上執(zhí)行一段堆積的SQL語句時,最好接納 SBR 模式,否則很容易引起主從服務(wù)器的數(shù)值不一致情況發(fā)生 另外,針對系統(tǒng)庫 MySQL 里面的表發(fā)生變化時的處理準(zhǔn)則如次: 如果是接納 INSERT,UPDBTE,DELETE 直接操作表的情況,則日記格局根據(jù) MySQL binlog_format 的設(shè)定而記錄 如果是接納 GRBNT,REVOKE,SET PBSSWORD 等管理語句來做的話,那么不管如何 都接納 SBR 模式記錄。 注:接納 RBR 模式后,能處理許多原先呈現(xiàn)的主鍵反復(fù)問題。實例: 對于insert into db_allot_ids select from db_allot_ids 這個語句: 在BINLOG_FORMBT=STBTEMENT 模式下: BINLOG日記信息為: 在BINLOG_FORMBT=ROW 模式下: BINLOG日記信息為: 以上的相關(guān)內(nèi)容就是對設(shè)置自動清理MySQL binlog日記以及手動刪去的方法的介紹,望你能有所收獲。
本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |