婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 解析MySQL binlog

解析MySQL binlog

熱門標簽:催天下外呼系統 大豐地圖標注app 400電話變更申請 北京金倫外呼系統 南太平洋地圖標注 武漢電銷機器人電話 html地圖標注并導航 呂梁外呼系統 400電話辦理服務價格最實惠

一、binlog簡介

binlog即binary log,二進制日志文件。它記錄了數據庫所有執行的DDL和DML語句(除了數據查詢語句select、show等),以事件形式記錄并保存在二進制文件中。

binlog主要有兩個應用場景,一是用于復制,master把它的二進制日志傳遞給slaves來達到master-slave數據一致的目的。二是用于數據恢復,例如還原備份后,可以重新執行備份后新產生的binlog,使得數據庫保持最新狀態。除去這兩個主要用途外,binlog可以用于異構系統之間數據的交互,binlog完整保存了一條記錄的前項和后項記錄,可以用DTS服務,將MySQL數據以準實時的方式抽取到底層數據平臺,比如HBase、Hive、Spark等,打通OLTP和OLAP。

binlog日志可以選擇三種模式,分別是 STATEMENTROWMIXED,下面簡單介紹下這三種模式:

  • STATEMENT:基于SQL語句的復制,每一條會修改數據的sql語句會記錄到binlog中。該模式下產生的binlog日志量會比較少,但可能導致主從數據不一致。
  • ROW:基于行的復制,不記錄每一條具體執行的SQL語句,僅需記錄哪條數據被修改了,以及修改前后的樣子。該模式下產生的binlog日志量會比較大,但優點是會非常清楚的記錄下每一行數據修改的細節,主從復制不會出錯。
  • Mixed:混合模式復制,以上兩種模式的混合使用,一般的復制使用STATEMENT模式保存binlog,對于STATEMENT模式無法復制的操作使用ROW模式保存binlog,MySQL會根據執行的SQL語句選擇日志保存方式。

binlog模式在MySQL 5.7.7之前,默認為 STATEMENT,在之后的版本中,默認為ROW。這里建議采用ROW模式,因為ROW模式更安全,可以清楚記錄每行數據修改的細節。

二、binlog相關參數

binlog默認情況下是不開啟的,不過一般情況下,初始化的時候建議在配置文件中增加log-bin參數來開啟binlog。

# 配置文件中增加log-bin配置
[mysqld]
log-bin = binlog

# 不指定路徑默認在data目錄下,也可以指定路徑
[mysqld]
log-bin = /data/mysql/logs/binlog

# 查看數據庫是否開啟了binlog
show variables like 'log_bin%';

開啟binlog后,還需注意一些與binlog相關的參數,下面簡單介紹下相關參數:

binlog_format
設置binlog模式,建議設為ROW。

binlog_do_db
此參數表示只記錄指定數據庫的二進制日志,默認全部記錄,一般情況下不建議更改。

binlog_ignore_db
此參數表示不記錄指定的數據庫的二進制日志,同上,一般不顯式指定。

expire_logs_days
此參數控制二進制日志文件保留天數,默認值為0,表示不自動刪除,可設置為0~99。可根據實際情況設置,比如保留15天或30天。MySQL8.0版本可用binlog_expire_logs_seconds參數代替。

max_binlog_size
控制單個二進制日志大小,當前日志文件大小超過此變量時,執行切換動作。此參數的最大和默認值是1GB,該設置并不能嚴格控制Binlog的大小,尤其是Binlog比較靠近最大值而又遇到一個比較大事務時,為了保證事務的完整性,不可能做切換日志的動作,只能將該事務的所有SQL都記錄進當前日志,直到事務結束。一般情況下可采取默認值。

log_bin_trust_function_creators
當二進制日志啟用后,此參數就會啟用。它控制是否可以信任存儲函數創建者,不會創建寫入二進制日志引起不安全事件的存儲函數。如果設置為0(默認值),用戶不得創建或修改存儲函數,除非它們具有除CREATE ROUTINE或ALTER ROUTINE特權之外的SUPER權限。建議設置為1。

sync_binlog
控制MySQL服務端將二進制日志同步到磁盤的頻率,默認值為1。
設置為0,表示MySQL不控制binlog的刷新,由文件系統自己控制它的緩存的刷新;
設置為1,表示每次事務提交,MySQL都會把binlog刷下去,這是最安全的設置,但由于磁盤寫入次數增加,可能會對性能產生負面影響;
設置為n,其中n為0或1以外的值,在進行n次事務提交以后,Mysql將執行一次fsync之類的磁盤同步指令,將Binlog文件緩存刷新到磁盤。
推薦設置為1,出于性能考慮也可酌情調整。

關于binlog操作與管理相關的SQL也有很多,下面介紹下部分常用的語句:

三、解析binlog內容

前面說過,所有對數據庫的修改都會記錄在binglog中。但binlog是二進制文件,無法直接查看,想要更直觀的觀測它就要借助mysqlbinlog命令工具了,下面的內容主要介紹如何使用mysqlbinlog來解析binlog日志內容。

為了故事的順利發展,我們首先切換下binlog,然后創建測試庫、測試表,執行插入數據,更新數據。這些前置操作暫不展示,下面我們來看下如何解析并查看生成的binlog內容:

# 本次解析基于MySQL8.0版本,實例已開啟gtid,模式為ROW

[root@centos logs]# mysqlbinlog  --no-defaults --base64-output=decode-rows -vv binlog.000013
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
...
...
#200708 16:52:09 server id 1003306  end_log_pos 1049 CRC32 0xbcf3de39   Query   thread_id=85    exec_time=0     error_code=0    Xid = 1514
use `bindb`/*!*/;
SET TIMESTAMP=1594198329/*!*/;
SET @@session.explicit_defaults_for_timestamp=1/*!*/;
/*!80013 SET @@session.sql_require_primary_key=0*//*!*/;
CREATE TABLE  `bin_tb` (
  `increment_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',
  `stu_id` int(11) NOT NULL COMMENT '學號',
  `stu_name` varchar(20) DEFAULT NULL COMMENT '學生姓名',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間',
  PRIMARY KEY (`increment_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='測試binlog'
/*!*/;
# at 1049
#200708 16:52:45 server id 1003306  end_log_pos 1128 CRC32 0xf19ea0a9   GTID    last_committed=2        sequence_number=3       rbr_only=yes    original_committed_timestamp=1594198365741300   immediate_commit_timestamp=1594198365741300        transaction_length=468
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
# original_commit_timestamp=1594198365741300 (2020-07-08 16:52:45.741300 CST)
# immediate_commit_timestamp=1594198365741300 (2020-07-08 16:52:45.741300 CST)
/*!80001 SET @@session.original_commit_timestamp=1594198365741300*//*!*/;
/*!80014 SET @@session.original_server_version=80019*//*!*/;
/*!80014 SET @@session.immediate_server_version=80019*//*!*/;
SET @@SESSION.GTID_NEXT= '0032d819-2d32-11ea-91b5-5254002ae61f:24883'/*!*/;
# at 1128
#200708 16:52:45 server id 1003306  end_log_pos 1204 CRC32 0x5b4b03db   Query   thread_id=85    exec_time=0     error_code=0
SET TIMESTAMP=1594198365/*!*/;
BEGIN
/*!*/;
# at 1204
#200708 16:52:45 server id 1003306  end_log_pos 1268 CRC32 0xd4755d50   Table_map: `bindb`.`bin_tb` mapped to number 139
# at 1268
#200708 16:52:45 server id 1003306  end_log_pos 1486 CRC32 0x274cf734   Write_rows: table id 139 flags: STMT_END_F
### INSERT INTO `bindb`.`bin_tb`
### SET
###   @1=1 /* INT meta=0 nullable=0 is_null=0 */
###   @2=1001 /* INT meta=0 nullable=0 is_null=0 */
###   @3='from1' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
###   @4=1594198365 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
###   @5=1594198365 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
### INSERT INTO `bindb`.`bin_tb`
### SET
###   @1=2 /* INT meta=0 nullable=0 is_null=0 */
###   @2=1002 /* INT meta=0 nullable=0 is_null=0 */
###   @3='dfsfd' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
###   @4=1594198365 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
###   @5=1594198365 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
...
# at 1486
#200708 16:52:45 server id 1003306  end_log_pos 1517 CRC32 0x0437e777   Xid = 1515
COMMIT/*!*/;
...
# at 1596
#200708 16:54:35 server id 1003306  end_log_pos 1681 CRC32 0x111539b6   Query   thread_id=85    exec_time=0     error_code=0
SET TIMESTAMP=1594198475/*!*/;
BEGIN
/*!*/;
# at 1681
#200708 16:54:35 server id 1003306  end_log_pos 1745 CRC32 0x6f0664ee   Table_map: `bindb`.`bin_tb` mapped to number 139
# at 1745
#200708 16:54:35 server id 1003306  end_log_pos 1939 CRC32 0xfafe7ae8   Update_rows: table id 139 flags: STMT_END_F
### UPDATE `bindb`.`bin_tb`
### WHERE
###   @1=5 /* INT meta=0 nullable=0 is_null=0 */
###   @2=1005 /* INT meta=0 nullable=0 is_null=0 */
###   @3='dsfsdg' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
###   @4=1594198365 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
###   @5=1594198365 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
### SET
###   @1=5 /* INT meta=0 nullable=0 is_null=0 */
###   @2=1005 /* INT meta=0 nullable=0 is_null=0 */
###   @3=NULL /* VARSTRING(60) meta=60 nullable=1 is_null=1 */
###   @4=1594198365 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
###   @5=1594198475 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
### UPDATE `bindb`.`bin_tb`
### WHERE
###   @1=6 /* INT meta=0 nullable=0 is_null=0 */
###   @2=1006 /* INT meta=0 nullable=0 is_null=0 */
###   @3='fgd' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
###   @4=1594198365 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
###   @5=1594198365 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
### SET
###   @1=6 /* INT meta=0 nullable=0 is_null=0 */
###   @2=1006 /* INT meta=0 nullable=0 is_null=0 */
###   @3=NULL /* VARSTRING(60) meta=60 nullable=1 is_null=1 */
###   @4=1594198365 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
###   @5=1594198475 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
...
# at 1939
#200708 16:54:35 server id 1003306  end_log_pos 1970 CRC32 0x632a82b7   Xid = 1516
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

# 可以看出,binlog中詳細記錄了每條sql執行產生的變化,
并且包括執行時間、pos位點、server_id等系統值。

關于mysqlbinlog工具的使用技巧還有很多,例如只解析對某個庫的操作或者某個時間段內的操作等。簡單分享幾個常用的語句,更多操作可以參考官方文檔。

mysqlbinlog --no-defaults --base64-output=decode-rows -vv binlog.000013 > /tmp/bin13.sql
將解析到的SQL導入文件中

mysqlbinlog --no-defaults --base64-output=decode-rows -vv --database=testdb binlog.000013
只解析某個庫的操作

mysqlbinlog --no-defaults --base64-output=decode-rows -vv --start-datetime=“2020-01-11 01:00:00” --stop-datetime=“2020-01-11 23:59:00” binlog.000008
解析指定時間段內的操作

mysqlbinlog --no-defaults --base64-output=decode-rows -vv --start-position=204136360 --stop-position=204136499 binlog.000008
解析指定pos位點內的操作

mysqlbinlog --no-defaults --start-position=204136360 --stop-position=204136499 binlog.000008 | mysql -uroot -pxxxx testdb
在指定庫中恢復指定位點間的操作

四、總結

不知不覺寫的挺長了,本文講述了各類binlog相關知識點,希望你讀完會對binlog有更深的認識。其實最重要的還是實踐,只有多學多用才能更好的掌握。這么硬核的知識,希望大家用到的時候可以拿來讀讀,歡迎各位轉發分享,讓更多人看到。

以上就是解析MySQL binlog的詳細內容,更多關于MySQL binlog的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Mysql數據庫清理binlog日志命令詳解
  • MySQL讀取Binlog日志常見的3種錯誤
  • mysql binlog(二進制日志)查看方法
  • mysql 正確清理binlog日志的兩種方法
  • 解說mysql之binlog日志以及利用binlog日志恢復數據的方法
  • Mysql數據庫之Binlog日志使用總結(必看篇)
  • MySQL 自動清理binlog日志的方法
  • 教你自動恢復MySQL數據庫的日志文件(binlog)
  • [MySQL binlog]mysql如何徹底解析Mixed日志格式的binlog
  • mysql binlog二進制日志詳解

標簽:無錫 西寧 龍巖 麗水 南充 迪慶 徐州 自貢

巨人網絡通訊聲明:本文標題《解析MySQL binlog》,本文關鍵詞  解析,MySQL,binlog,解析,MySQL,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解析MySQL binlog》相關的同類信息!
  • 本頁收集關于解析MySQL binlog的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精华液一区二区三区| 日本精品一区二区三区高清 | 久久久久久一级片| 亚洲综合色婷婷| 国产91精品入口| 日韩欧美黄色影院| 亚洲国产欧美在线| 成人av电影在线| 日韩免费观看2025年上映的电影| 亚洲精品日韩综合观看成人91| 国产美女主播视频一区| 欧美一区二区不卡视频| 一区二区久久久久久| 成人深夜在线观看| 久久久高清一区二区三区| 午夜欧美视频在线观看| 97成人超碰视| 欧美国产禁国产网站cc| 久久精品国产77777蜜臀| 欧美日韩mp4| 亚洲国产精品精华液网站| 91在线观看视频| 亚洲欧洲精品一区二区精品久久久 | 中文字幕在线不卡一区| 国产精品88av| 国产色91在线| 国产福利一区二区三区视频| 26uuu精品一区二区| 九九精品视频在线看| 日韩免费高清视频| 久久爱另类一区二区小说| 日韩一区二区中文字幕| 欧美a级一区二区| 日韩一区二区在线免费观看| 午夜电影网亚洲视频| 欧美日韩国产综合一区二区| 亚欧色一区w666天堂| 欧美日本韩国一区二区三区视频| 亚洲在线成人精品| 欧美午夜片在线看| 爽爽淫人综合网网站| 欧美剧情片在线观看| 欧美bbbbb| 亚洲国产精品av| 色综合一区二区| 舔着乳尖日韩一区| 日韩一级欧美一级| 国产一区日韩二区欧美三区| 久久精品视频一区| 91精品福利在线| 天天色综合天天| 久久久久久久精| 99久久免费精品| 亚洲mv大片欧洲mv大片精品| 日韩欧美一级在线播放| 国产乱码一区二区三区| 亚洲欧洲在线观看av| 欧美视频三区在线播放| 激情五月播播久久久精品| 国产精品国产馆在线真实露脸| 在线一区二区三区做爰视频网站| 日本中文在线一区| 国产精品麻豆一区二区| 欧美日韩精品一区二区三区| 国产一区二区日韩精品| 一个色在线综合| 久久蜜臀中文字幕| 欧美在线观看一区二区| 国产麻豆9l精品三级站| 亚洲欧洲综合另类在线| 日韩欧美不卡在线观看视频| 99久久精品国产毛片| 日本欧美在线观看| 日韩美女久久久| 日韩欧美三级在线| 91久久精品一区二区三区| 精品一区二区三区免费观看| 亚洲欧美激情插| 欧美精品一区二区三区蜜桃| 色妞www精品视频| 精品一区二区三区的国产在线播放| 中文字幕制服丝袜成人av| 5566中文字幕一区二区电影| 91一区二区三区在线观看| 国内欧美视频一区二区| 香蕉久久一区二区不卡无毒影院 | 国产电影精品久久禁18| 亚洲一区在线看| 中文字幕日韩精品一区| 精品美女在线播放| 欧美日韩精品高清| 99视频一区二区三区| 国产精品一区二区视频| 久久精品国产精品亚洲红杏| 亚洲成人中文在线| 一区二区三区日韩精品| 国产精品久久影院| 久久精品一区四区| 26uuu成人网一区二区三区| 欧美卡1卡2卡| 在线观看视频欧美| 一本大道综合伊人精品热热| 不卡一区二区中文字幕| 成人一区在线看| 国产精品一级片在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲地区一二三色| 五月天精品一区二区三区| 亚洲一二三区在线观看| 亚洲午夜av在线| 丝袜美腿亚洲综合| 日韩电影网1区2区| 日本最新不卡在线| 久久国产婷婷国产香蕉| 久久成人精品无人区| 国产一区二区三区四区五区美女| 黄色成人免费在线| 国产美女久久久久| 成人免费黄色大片| 91视频在线观看| 色综合欧美在线| 欧美日韩另类国产亚洲欧美一级| 6080午夜不卡| 久久精品欧美一区二区三区不卡| 国产亚洲成aⅴ人片在线观看| 国产免费久久精品| 成人免费小视频| 亚洲国产中文字幕| 日韩成人av影视| 久久99久国产精品黄毛片色诱| 看电视剧不卡顿的网站| 成人综合日日夜夜| 一本一道综合狠狠老| 91精品国产色综合久久久蜜香臀| 欧美不卡一区二区三区四区| 中文字幕欧美国产| 一区二区国产盗摄色噜噜| 日韩成人dvd| jizzjizzjizz欧美| 欧美精选一区二区| 国产亚洲欧美在线| 一区二区欧美国产| 国产又黄又大久久| 在线观看av不卡| 欧美大片免费久久精品三p| 亚洲国产精品激情在线观看| 亚洲免费成人av| 久久se精品一区精品二区| 一本久久a久久精品亚洲| 91精品国产91综合久久蜜臀| 国产欧美日韩久久| 午夜精品免费在线观看| 国产一区三区三区| 欧美精品日韩一本| 欧美精彩视频一区二区三区| 亚洲一区在线视频| 成人黄色av电影| 欧美一卡二卡在线观看| 亚洲色图制服丝袜| 国产一区二区h| 67194成人在线观看| 亚洲免费在线看| 国产成人aaa| 91精品综合久久久久久| 亚洲人亚洲人成电影网站色| 免费黄网站欧美| 欧美性生活一区| 中文字幕第一区综合| 激情偷乱视频一区二区三区| 欧美视频第二页| 亚洲人精品一区| 成人app在线| 国产日韩欧美综合一区| 精品一二三四在线| 91麻豆精品国产91| 日韩一区精品视频| 欧美怡红院视频| 亚洲激情五月婷婷| 97久久精品人人做人人爽50路 | 精品久久久久久亚洲综合网| 一区二区高清免费观看影视大全| 成人午夜视频在线观看| 日本一区二区三区四区| 国内不卡的二区三区中文字幕| 欧美一区二区免费| 美女视频网站黄色亚洲| 在线综合视频播放| 毛片av一区二区三区| 日韩一区二区三区精品视频| 三级久久三级久久久| 欧美老人xxxx18| 亚洲444eee在线观看| 欧美色精品在线视频| 亚洲成人一二三| 欧美日韩一级二级三级| 亚洲成av人片一区二区三区 | 免费成人av资源网| 91精品国产色综合久久不卡蜜臀 | 1000精品久久久久久久久| 99re热这里只有精品免费视频|