自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL binlog日志三種模式選擇及配置

數(shù)據(jù)庫 MySQL
在認(rèn)識(shí)binlog日志三種模式前,先了解一下解析binlog日志的命令工mysqlbinlog。mysqlbinlog工具的作用是解析mysql的二進(jìn)制binlog日志內(nèi)容,把二進(jìn)制日志解析成可以在MySQL數(shù)據(jù)庫里執(zhí)行的SQL語句。

在認(rèn)識(shí)binlog日志三種模式前,先了解一下解析binlog日志的命令工mysqlbinlog。mysqlbinlog工具的作用是解析mysql的二進(jìn)制binlog日志內(nèi)容,把二進(jìn)制日志解析成可以在MySQL數(shù)據(jù)庫里執(zhí)行的SQL語句。binlog日志原始數(shù)據(jù)是以二進(jìn)制形式存在的,需要使用mysqlbinlog工具轉(zhuǎn)換成SQL語句形式。

mysql的binlog日志作用是用來記錄mysql內(nèi)部增刪改等對(duì)mysql數(shù)據(jù)庫有更新內(nèi)容的記錄(對(duì)數(shù)據(jù)庫進(jìn)行改動(dòng)的操作),對(duì)數(shù)據(jù)庫查詢的語句如show,select開頭的語句,不會(huì)被binlog日志記錄,主要用于數(shù)據(jù)庫的主從復(fù)制與及增量恢復(fù)。

案例:

在對(duì)數(shù)據(jù)庫進(jìn)行定時(shí)備份時(shí),只能備份到某個(gè)時(shí)間點(diǎn),假如在凌晨0點(diǎn)進(jìn)行全備了,但是在中午12點(diǎn)出現(xiàn)故障需要恢復(fù)數(shù)據(jù),使用0點(diǎn)的全備只能恢復(fù)到0點(diǎn)時(shí)刻的數(shù)據(jù),難道0點(diǎn)到12點(diǎn)的數(shù)據(jù)只能丟失了嗎?

這時(shí)就是體現(xiàn)binlog日志重要性的時(shí)候了,需要對(duì)binlog日志進(jìn)行定時(shí)推送(一分鐘一次或五分鐘一次,時(shí)間頻率視業(yè)務(wù)場景而定)完成增量備份。當(dāng)出現(xiàn)故障時(shí),可以使用定時(shí)備份和增量備份恢復(fù)到故障點(diǎn)時(shí)刻的數(shù)據(jù)。具體的恢復(fù)方案,這里不做簡述,后面再寫文章來講解。

binlog日志三種模式

ROW Level

記錄的方式是行,即如果批量修改數(shù)據(jù),記錄的不是批量修改的SQL語句事件,而是每條記錄被更改的SQL語句,因此,ROW模式的binlog日志文件會(huì)變得很“重”。

優(yōu)點(diǎn):row level的binlog日志內(nèi)容會(huì)非常清楚的記錄下每一行數(shù)據(jù)被修改的細(xì)節(jié)。而且不會(huì)出現(xiàn)某些特定情況下存儲(chǔ)過程或function,以及trigger的調(diào)用和觸發(fā)器無法被正確復(fù)制的問題。

缺點(diǎn):row level下,所有執(zhí)行的語句當(dāng)記錄到日志中的時(shí)候,都以每行記錄的修改來記錄,這樣可能會(huì)產(chǎn)生大量的日志內(nèi)容,產(chǎn)生的binlog日志量是驚人的。批量修改幾百萬條數(shù)據(jù),那么記錄幾百萬行……

Statement level(默認(rèn))

記錄每一條修改數(shù)據(jù)的SQL語句(批量修改時(shí),記錄的不是單條SQL語句,而是批量修改的SQL語句事件)。看上面的圖解可以很好的理解row level和statement level兩種模式的區(qū)別。

優(yōu)點(diǎn):statement模式記錄的更改的SQ語句事件,并非每條更改記錄,所以大大減少了binlog日志量,節(jié)約磁盤IO,提高性能。

缺點(diǎn):statement level下對(duì)一些特殊功能的復(fù)制效果不是很好,比如:函數(shù)、存儲(chǔ)過程的復(fù)制。由于row level是基于每一行的變化來記錄的,所以不會(huì)出現(xiàn)類似問題

Mixed

實(shí)際上就是前兩種模式的結(jié)合。在Mixed模式下,MySQL會(huì)根據(jù)執(zhí)行的每一條具體的sql語句來區(qū)分對(duì)待記錄的日志形式,也就是在Statement和Row之間選擇一種。

企業(yè)場景如何選擇binlog的模式

1、 如果生產(chǎn)中使用MySQL的特殊功能相對(duì)少(存儲(chǔ)過程、觸發(fā)器、函數(shù))。選擇默認(rèn)的語句模式,Statement Level。

2、 如果生產(chǎn)中使用MySQL的特殊功能較多的,可以選擇Mixed模式。

3、 如果生產(chǎn)中使用MySQL的特殊功能較多,又希望數(shù)據(jù)***化一致,此時(shí)***Row level模式;但是要注意,該模式的binlog非常“沉重”。

查看binlog模式

 

  1. mysql> show global variables like "%binlog_format%" 
  2. +---------------+-----------+  
  3. | Variable_name | Value    |  
  4. +---------------+-----------+  
  5. | binlog_format | STATEMENT |  
  6. +---------------+-----------+ 

配置binlog日志模式

vim my.cnf(在[mysqld]模塊中配置)

 

  1. log-bin = /data/3306/mysql-bin  
  2. binlog_format="STATEMENT"  
  3. #binlog_format="ROW"  
  4. #binlog_format="MIXED" 

 

不重啟,使配置在msyql中生效

SET global binlog_format='STATEMENT';

責(zé)任編輯:龐桂玉 來源: Linux公社
相關(guān)推薦

2024-05-28 00:10:00

JavaMySQL數(shù)據(jù)庫

2024-05-30 08:03:17

2023-11-23 13:17:39

MySQL?數(shù)據(jù)庫

2022-03-15 11:31:17

MySQL日志格式

2022-04-27 08:01:15

FastAPI配置日志

2009-11-06 13:23:27

WCF模式

2015-09-14 09:31:44

結(jié)對(duì)設(shè)計(jì)

2024-01-09 11:38:12

2019-09-02 14:44:15

云計(jì)算云安全云取證

2022-05-27 11:33:02

前端代碼設(shè)計(jì)模式

2010-09-09 10:08:59

2009-08-04 09:09:56

Java常見異常

2021-05-17 07:48:06

MySQL日志系統(tǒng)

2009-08-01 22:03:23

智能社區(qū)線纜

2011-11-02 11:06:50

2022-05-30 07:07:35

Java監(jiān)聽文件Java 8

2009-12-21 13:37:43

WCF消息交換

2010-06-28 17:43:44

SQL Server

2016-09-13 14:05:24

Spark集群管理模式

2010-07-13 15:55:12

FTP數(shù)據(jù)傳輸模式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)