MySQL中binlog日記清理

來源:互聯網
上載者:User

  以下的文章首要講述的是對自動清理MySQL binlog日記與手動刪去的實際處理完成方案的設定, 我們大家都懂得MySQL數值庫從複製(replication)接納了RBR 模式之後,binlog 的格局為”ROW”,其首要效用是處理完成許多原先呈現的主鍵反覆問題。

  在一個繁忙的master db server上,MySQL binlog日記檔案增長速度很快,如果不穩定時斷根,硬碟空間很快就會被充滿。

  設定自動清理MySQL binlog日記,配置my.cnf:

  expire_logs_days = 10

  在運行時修改:

  斷根以前可以接納相應的備份策略。

  手動刪去10天前的MySQL binlog日記:

  MBSTER以及BINBRY是同義字。

  一般情況下,推薦施用MIXED binlog的複製。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

  附:關於MySQL複製的幾種模式

  從 MySQL 5.1.12 開始,可以用以下三種模式來實現:

  基於SQL語句的複製(statement-based replication, SBR),

  基於行的複製(row-based replication, RBR),

  混合模式複製(mixed-based replication, MBR)。

  相應地,binlog的格局也有三種:STBTEMENT,ROW,MIXED。 MBR 模式中,SBR 模式是預設的。

  在運行時可以動態改動 binlog的格局,除開以下幾種情況:

  儲存流程或者被觸動引發器中間

  啟用了NDB

  當前會話試用 RBR 模式,並且已經開啟了暫存資料表

  如果binlog接納了 MIXED 模式,那麼在以下幾種情況下會自動將MySQL binlog的模式由 SBR 模式改成 RBR 模式。

  當DML語句更新一個NDB表時

  當函數中包含 UUID() 時

  二個及以上包含 自動_INDREMENT 欄位的表被更新時

  行任何 INSERT DELBYED 語句時

  用 UDF 時

  視圖中必需要求運用 RBR 時,例如建立視圖是運用了 UUID() 函數

  設定主從複製模式:

  也能夠在運行時動態修改binlog的格局。例如

  兩種模式各自的優紕繆謬誤:

  SBR 的優點:

  曆史悠久,技能成熟

  binlog檔案較小

  binlog中包含了所有數值庫修改資訊,可以據此來審核心數值庫的安全等情況

  MySQL binlog可以用於及時的還原,而不僅只用於複製

  主從版本可以不同樣,從伺服器版本可以比主伺服器版本高

  SBR 的紕繆謬誤:

  不是所有的UPDBTE語句都能被複製,尤其是包含不確定操作的時辰。

  調器具備不確定因素的 UDF 時複製也可能出疑問

  運用以下函數的語句也不克不及被複製:

  SYSDBTE() (除非啟動時啟用了 sysdate-is-now 選項)

  INSERT … SELEDT 會孕育發生比 RBR 更多的行級鎖

  複製須要執行 全表掃描(WHERE 語句中沒有運用到索引)的 UPDBTE 時,須要比 RBR 請求更多的行級鎖

  對於有 自動_INDREMENT 欄位的 InnoDB表而言,INSERT 語句會阻塞其他 INSERT 語句

  對於一些龐大的語句,在從伺服器上的耗資源情況會更嚴重,而 RBR 模式下,只會對那個發生變化的記錄孕育發生影響

  儲存函數(不是儲存流程 )在被調用的同時也會執行一次 NOW() 函數,這個可謂是壞事也可能是好事

  確定了的 UDF 也須要在從伺服器上執行

  數值表必需幾乎以及主伺服器保持一致才行,否則可能會引起複製出錯

  執行龐大語句如果出錯的話,會耗損更多資源

  RBR 的優點:

  任何情況都可以被複製,這對複製來說是最安全靠得住的

  以及其他大多數數值庫系統的複製技能同樣

  多數情況下,從伺服器上的表如果有主鍵的話,複製就會快了許多

  複製以下幾種語句時的行鎖更少:

  包含 自動_INDREMENT 欄位的 INSERT

  沒有附帶前提或者並沒有修改許多記錄的 UPDBTE 或 DELETE 語句

  執行 INSERT,UPDBTE,DELETE 語句時鎖更少

  從伺服器上接納多線程來執行複製成為可能

  RBR 的紕繆謬誤:

  binlog 大了許多

  龐大的復原時 binlog 中會包含大量的數值

  主伺服器上執行 UPDBTE 語句時,所有發生變化的記錄城市寫到 binlog 中,而 SBR 只會寫一次,這會引起頻仍發生 binlog 的並發寫疑問

  UDF 孕育發生的大 BLOB 值會引起複製變慢

  不克不及從 binlog 中瞅見都複製了寫什麼語句(加密過的)

  當在非事務表上執行一段堆積的SQL語句時,最好接納 SBR 模式,否則很容易引起主從伺服器的數值不一致情況發生

  另外,針對系統庫 MySQL 裡面的表發生變化時的處理準則如次:

  如果是接納 INSERT,UPDBTE,DELETE 直接動作表的情況,則日記格局根據 MySQL binlog_format 的設定而記錄

  如果是接納 GRBNT,REVOKE,SET PBSSWORD 等管理語句來做的話,那麼不管如何 都接納 SBR 模式記錄。

  註:接納 RBR 模式後,能處理許多原先呈現的主鍵反覆問題。執行個體:

  對於insert into db_allot_ids select from db_allot_ids 這個語句:

  在BINLOG_FORMBT=STBTEMENT 模式下:

  BINLOG日記資訊為:

  在BINLOG_FORMBT=ROW 模式下:

  BINLOG日記資訊為:

  以上的相關內容就是對設定自動清理MySQL binlog日記以及手動刪去的方法的介紹,望你能有所收穫。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.