国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL的binlog redo log和undo log怎么利用

2024-07-24 12:33:39
字體:
來源:轉載
供稿:網友
  這篇文章主要介紹“MySQL的binlog、redo log和undo log怎么使用”,在日常操作中,相信很多人在MySQL的binlog、redo log和undo log怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MySQL的binlog、redo log和undo log怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
 
  1、binlog
  binlog用于記錄數據庫執行的寫入性操作(不包括查詢)信息,以二進制的形式保存在磁盤中。binlog是mysql的邏輯日志,并且由Server層進行記錄,使用任何存儲引擎的mysql數據庫都會記錄binlog日志。
  
  當從節點連接主節點時,主節點會創建一個log dump 線程,用于發送binlog的內容。在讀取binlog中的操作時,此線程會對主節點上的binlog加鎖,當讀取完成,甚至在發動給從節點之前,鎖會被釋放;
  從節點I/O線程
  當從節點上執行start slave命令之后,從節點會創建一個I/O線程用來連接主節點,請求主庫中更新的binlog。I/O線程接收到主節點binlog dump進程發來的更新之后,保存在本地relaylog中;
  從節點SQL線程
  SQL線程負責讀取relaylog中的內容,解析成具體的操作并執行,最終保證主從數據的一致性;
  MySQL 數據庫主從同步原理
  binlog的內容
  上面說了,binlog是一種邏輯日志,可以簡單得理解為sql語句,但是實際上還包含著執行的sql語句的反向邏輯。delete對應著delete本身以及反向的insert信息;update包含著對應的update執行前后數據行的相關信息;insert包含自身的insert以及對應的delete信息。
 
  binlog的格式
  binlog共有三種格式,分別是statement、row以及mixed。MySQL 5.7.7版本之前默認使用的是statement,MySQL 5.7.7之后默認使用的是row。日志的格式可以通過my.ini配置文件中的binlog-format來修改。
  (1)statement:基于sql語句的復制(statement-based replication,SBR),每一條修改數據的sql語句都會記錄到binlog中。
 
  優點:不需要具體記錄某一行的變化,節約空間,減少io,提高性能;
  缺點:在執行sysdate()或者sleep()等操作的時候,可能導致主從數據不一致的情況;
  (2)row:基于行記錄的復制(row-based replication,RBR),不記錄sql語句上下文相關信息,而是記錄哪條記錄被修改的細節。
 
  優點:非常詳細地記錄每一行記錄修改的細節,因而不會出現數據無法被正確復制的情況;
  缺點:由于會非常詳細地記錄每一條記錄修改的細節,這樣會產生大量的日志內容。假設現在有一條update語句,修改了很多條記錄,則每條修改記錄都會記錄到binlog中。特別地,alter table這個操作,由于表結構的變化,每行記錄都會發生變化,導致日志量暴增;
  (3)mixed:根據上面所說的,statement和row各有優缺點,因此出現了mixed這個版本,將這二者進行混合。一般情況下使用statement格式來進行保存,當遇到statement無法解決時,切換為row格式來進行保存。
  特別地,上面說了,新版本(MySQL 5.7.7之后)默認使用的row格式,這里的row也做了相應的優化,在遇到alter table這個操作時采用statement格式進行記錄,其余操作仍然使用row格式。
 
  binlog刷盤時機
 
  對于InnoDB存儲引擎來說,只有在事務提交的時候才會記錄binlog,此時記錄還在內存中,MySQL通過sync_binlog來控制binlog的刷盤時機,取值范圍為0-N:
 
  0:不強制刷到磁盤,由系統自行判斷何時寫入磁盤中;
  1:每次提交后都要將binlog寫入磁盤中;
  N:每N個事務,才會將binlog寫入磁盤中;
  從上面可以看出,sync_binlog最安全的是設置是1,這也是MySQL 5.7.7之后版本的默認值。但是設置一個大一些的值可以提升數據庫性能,因此實際情況下也可以將值適當調大,犧牲一定的一致性來獲取更好的性能。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大埔区| 六枝特区| 游戏| 邯郸县| 建瓯市| 临朐县| 颍上县| 灵石县| 肃宁县| 屏东县| 石首市| 特克斯县| 溧阳市| 枣强县| 密云县| 财经| 灵山县| 安丘市| 鄂伦春自治旗| 东丰县| 新丰县| 南丰县| 板桥市| 江津市| 巴彦淖尔市| 威海市| 腾冲县| 和静县| 满洲里市| 洪泽县| 廊坊市| 敦煌市| 鹿泉市| 阿克苏市| 曲沃县| 堆龙德庆县| 邵阳县| 虎林市| 汤阴县| 中江县| 宜昌市|