精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MySQL 的 binlog 的三種格式這么好玩!

數據庫 MySQL
binlog 是 MySQL Server 層的日志,而不是存儲引擎自帶的日志,它記錄了所有的 DDL 和 DML(不包含數據查詢語句)語句,而且是以事件形式記錄,還包含語句所執行的消耗的時間等。

MySQL 中的日志比較重要的有 binlog(歸檔日志)、redo log(重做日志)以及 undo log,那么跟我們本文相關的主要是 binlog,另外兩個日志松哥將來有空了再和大家詳細介紹。

1. binlog

binlog 我們中文一般稱作歸檔日志,如果大家看過松哥之前發的 MySQL 主從搭建,應該對這個日志有印象,當我們搭建 MySQL 主從的時候就離不開 binlog(傳送門:MySQL8 主從復制踩坑指南)。

binlog 是 MySQL Server 層的日志,而不是存儲引擎自帶的日志,它記錄了所有的 DDL 和 DML(不包含數據查詢語句)語句,而且是以事件形式記錄,還包含語句所執行的消耗的時間等,需要注意的是:

  • binlog 是一種邏輯日志,他里邊所記錄的是一條 SQL 語句的原始邏輯,例如給某一個字段 +1,注意這個區別于 redo log 的物理日志(在某個數據頁上做了什么修改)。
  • binlog 文件寫滿后,會自動切換到下一個日志文件繼續寫,而不會覆蓋以前的日志,這個也區別于 redo log,redo log 是循環寫入的,即后面寫入的可能會覆蓋前面寫入的。
  • 一般來說,我們在配置 binlog 的時候,可以指定 binlog 文件的有效期,這樣在到期后,日志文件會自動刪除,這樣避免占用較多存儲空間。

根據 MySQL 官方文檔的介紹,開啟 binlog 之后,大概會有 1% 的性能損耗,不過這還是可以接受的,一般來說,binlog 有兩個重要的使用場景:

  • MySQL 主從復制時:在主機上開啟 binlog,主機將 binlog 同步給從機,從機通過 binlog 來同步數據,進而實現主機和從機的數據同步。
  • MySQL 數據恢復,通過使用 mysqlbinlog 工具再結合 binlog 文件,可以將數據恢復到過去的某一時刻。

2. 配置 binlog

為了演示方便,松哥這里在 Docker 中安裝了 MySQL,我們以此為例來開始今天的演示。如果小伙伴們還不懂 docker 的使用,可以在公眾號后臺回復 docker,有松哥寫的教程。

首先我們在 docker 中安裝好 MySQL,然后進入到容器中,通過如下命令可以查看 binlog 是否開啟:

這個 OFF 就表示 binlog 是一個關閉狀態,沒有開啟。

通過以下命令可以查看 binlog 日志的格式,如下:

可以看到,這個 binlog 的格式為 ROW。

這里就涉及到一個問題,binlog 的格式。

2.1 binlog 的格式

binlog 有三種格式:

  • Statement(Statement-Based Replication,SBR):每一條會修改數據的 SQL 都會記錄在 binlog 中。
  • Row(Row-Based Replication,RBR):不記錄 SQL 語句上下文信息,僅保存哪條記錄被修改。
  • Mixed(Mixed-Based Replication,MBR):Statement 和 Row 的混合體。

2.1.1 Statement

Statement 模式只記錄執行的 SQL,不需要記錄每一行數據的變化,因此極大的減少了 binlog 的日志量,避免了大量的 IO 操作,提升了系統的性能。

但是,正是由于 Statement 模式只記錄 SQL,而如果一些 SQL 中包含了函數,那么可能會出現執行結果不一致的情況。比如說 uuid() 函數,每次執行的時候都會生成一個隨機字符串,在 master 中記錄了 uuid,當同步到 slave 之后,再次執行,就獲取到另外一個結果了。

所以使用 Statement 格式會出現一些數據一致性問題。

2.2.2 Row

從 MySQL5.1.5 版本開始,binlog 引入了 Row 格式,Row 格式不記錄 SQL 語句上下文相關信息,僅僅只需要記錄某一條記錄被修改成什么樣子了。

Row 格式的日志內容會非常清楚的記錄下每一行數據修改的細節,這樣就不會出現 Statement 中存在的那種數據無法被正常復制的情況。

不過 Row 格式也有一個很大的問題,那就是日志量太大了,特別是批量 update、整表 delete、alter 表等操作,由于要記錄每一行數據的變化,此時會產生大量的日志,大量的日志也會帶來 IO 性能問題。

2.2.3 Mixed

從 MySQL5.1.8 版開始,MySQL 又推出了 Mixed 格式,這種格式實際上就是 Statement 與 Row 的結合。

在 Mixed 模式下,系統會自動判斷該用 Statement 還是 Row:一般的語句修改使用 Statement 格式保存 binlog;對于一些 Statement 無法準確完成主從復制的操作,則采用 Row 格式保存 binlog。

Mixed 模式中,MySQL 會根據執行的每一條具體的 SQL 語句來區別對待記錄的日志格式,也就是在 Statement 和 Row 之間選擇一種。

2.2 配置

接下來我們來看看 binlog 的配置。

2.2.1 開啟 binlog

開啟 binlog 主要是修改 MySQL 的配置文件 mysqld.cnf,該文件在容器的 /etc/mysql/mysql.conf.d 目錄下。

針對該配置文件,我們做如下修改:

# 這個參數表示啟用 binlog 功能,并指定 binlog 的存儲目錄
log-bin=javaboy_logbin

# 設置一個 binlog 文件的最大字節
# 設置最大 100MB
max_binlog_size=104857600

# 設置了 binlog 文件的有效期(單位:天)
expire_logs_days = 7

# binlog 日志只記錄指定庫的更新(配置主從復制的時候會用到)
#binlog-do-db=javaboy_db

# binlog 日志不記錄指定庫的更新(配置主從復制的時候會用到)
#binlog-ignore-db=javaboy_no_db

# 寫緩存多少次,刷一次磁盤,默認 0 表示這個操作由操作系統根據自身負載自行決定多久寫一次磁盤
# 1 表示每一條事務提交都會立即寫磁盤,n 則表示 n 個事務提交才會寫磁盤
sync_binlog=0

# 為當前服務取一個唯一的 id(MySQL5.7 之后需要配置)
server-id=1

各項配置的含義松哥已經在注視中說明了。截圖如下:

配置完成后,執行如下命令重啟 mysql 容器(mysql1 是我這里容器的名字):

docker restart mysql1

重啟之后,再次執行 show variables like 'log_bin%'; 即可看到 binlog 已經開啟了。

這里除了 log_bin 變量外,還有兩個變量名也值得我們關注:

  • log_bin_basename:這個是將來產生的 binlog 日志文件的名稱前綴,換句話說,根據大家目前所看到的配置,將來產生的 binlog 日志文件名為 javaboy_logbin.xxx,這個文件中將會用來記錄所有的 DDL 和 DML 語句事件。
  • log_bin_index:這個是 binlog 的索引文件,保存了所有 binlog 的目錄,因為 binlog 可能會有多個。我們可以來查看一下現在的javaboy_logbin.index 文件:

可以看到,目前只有一個 logbin 文件。

2.2.2 修改 binlog_format

binlog_format 有幾種不同的改法:

修改當前會話的 binlog_format,這個修改只針對當前會話有效:

也可以修改全局的 binlog_format,這個修改,當 MySQL 重啟之后,會失效:

如果想一勞永逸搞定這事,可以修改 /etc/mysql/mysql.conf.d/mysqld.cnf 配置文件,在配置文件中,添加 binlog_format 選項,如下:

這是一個永久性的修改。

3. 常見 binlog 操作

接下來我們再來介紹幾個常見的 binlog 操作命令。

  • 查看所有 binlog 日志

通過如下方式我們可以查看 binlog 日志列表:

show master logs;

可以看到,我這里目前只有一個日志文件,文件名為 javaboy_logbin.000001,File_size 表示這個文件占用的字節大小是 154。

  • 查看 master 狀態

這個命令我們在搭建 MySQL 主從的時候經常會用到,如下:

這個時候可以看到最新的 binlog 日志文件名稱以及最后一個操作事件的 Position 值(這個值有啥用,我們后面會給大家詳細介紹)。

  • 刷新 binlog

正常來說,一個 binlog 寫滿之后,會自動切換到下一個 binlog 開始寫,不過我們也可以執行一個 flush logs 命令來手動刷新 binlog,手動刷新 binlog 之后,就會產生一個新的 binlog 日志文件,接下來所有的 binlog 日志都將記錄到新的文件中。如下:

由上圖可以看到,我們刷新日志之后,再通過 show master logs 去查看日志,發現日志文件已經多了一個新產生的了,然后再通過 show master status 去查看最新的日志文件信息,發現也已經變為 javaboy_logbin.000002。

  • 重置 binlog

reset master 可以重置 binlog 日志文件,讓日志重新從 000001 開始記錄,不過如果當前主機有一個或者多個從機在運行,那么該命令就運行不了(因為從機是通過 binlog 來實現數據庫同步的,主機把 binlog 清空了,從機會報找不到 binlog 的錯誤)。

  • 查看 binlog

由于 binlog 是二進制日志文件,所以要是直接打開,那肯定是看不了的:

沒有看到任何有用的信息。

為了查看 binlog,MySQL 為我們提供了兩個官方工具,我們一個一個來看,首先是 mysqlbinlog 命令,如下:

雖然看起來亂糟糟的,不過仔細看著其實都有跡可循。因為我這里是一個新安裝的數據庫,里邊只是創建了一個名為 javaboy 的庫,然后創建了一個名為 user 的表加了兩條數據,其他什么事情都沒做,所以創建庫的腳本我們其實能夠從紛雜的文件中找到。

產生的日志文件中有一個 end_log_pos 是日志文件的 pos 點,這個將來在數據恢復的時候有用。

不過這種查看方式不夠人性化,我們說 binlog 是按照事件來記錄日志的,所以如果我們能夠按照事件的方式查看日志,就會好很多,我們再來看看如下一個命令:

show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];

這個表示以事件的方式來查看 binlog,這里涉及到幾個參數:

  • log_name:可以指定要查看的 binlog 日志文件名,如果不指定的話,表示查看最早的 binlog 文件。
  • pos:從哪個 pos 點開始查看,凡是 binlog 記錄下來的操作都有一個 pos 點,這個其實就是相當于我們可以指定從哪個操作開始查看日志,如果不指定的話,就是從該 binlog 的開頭開始查看。
  • offset:這是是偏移量,不指定默認就是 0。
  • row_count:查看多少行記錄,不指定就是查看所有。

我們來看一個簡單的例子:

show binlog events in 'javaboy_logbin.000001';

這下就清晰多了,我們可以看到之前的所有操作,例如:

  • 在 Pos 219-322 之間創建了一個庫。
  • 在 Pos 387-537 之間創建了一張表。
  • 在 Pos 677-780 之間添加了一條記錄。
  • ...

這其實就是 Row 格式的 binlog。

4. 小結

好啦,今天這篇文章主要是和小伙伴們分享了 MySQL 的 binlog 日志,主要是一些理論知識,下篇文章松哥將通過兩個具體的案例,來和大家演示不同的 binlog_format 存在的問題。

本文轉載自微信公眾號「江南一點雨 」,可以通過以下二維碼關注。轉載本文請聯系江南一點雨公眾號。

責任編輯:武曉燕 來源: 江南一點雨
相關推薦

2018-08-21 10:05:59

MySQLbinlog數據庫

2024-05-30 08:03:17

2017-12-29 08:26:28

存儲引擎MySQL

2024-05-28 00:10:00

JavaMySQL數據庫

2009-12-04 15:42:57

PHP文件緩存

2011-01-18 15:35:59

jQueryJavaScriptweb

2017-07-03 18:24:39

MySQL數據冗余

2024-04-01 08:00:00

MySQL關聯設計數據庫

2010-11-22 17:00:10

MySQL建表語句

2023-11-23 13:17:39

MySQL?數據庫

2010-05-25 18:50:22

MySQL安裝

2010-10-09 11:36:30

MySQL字符集

2010-05-11 14:08:50

MySQL數字類型

2015-09-14 09:31:44

結對設計

2013-04-01 09:55:03

OpenStack存儲

2012-07-17 09:16:16

SpringSSH

2018-03-28 16:10:23

閱讀源碼境界

2010-11-23 10:11:23

mysql建表亂碼

2010-10-13 11:19:11

MySQL數據文件

2024-08-07 08:21:05

點贊
收藏

51CTO技術棧公眾號

欧美伦理片在线看| 日本精品免费| 91精品国产乱码久久久张津瑜| 久久99偷拍| 在线免费精品视频| 欧洲xxxxx| 视频二区在线| 麻豆精品视频在线| 欧美激情乱人伦| 国产高潮呻吟久久| 午夜免费欧美电影| 91久久精品一区二区二区| 亚洲国产综合自拍| 天天干,夜夜爽| 久草热8精品视频在线观看| 久久久亚洲精选| 国产在线免费看| 欧美顶级毛片在线播放| 欧美日本视频在线| 男人靠女人免费视频网站 | 日韩av在线最新| 天堂网在线免费观看| 欧亚av在线| 一级做a爱片久久| 亚洲蜜桃在线| 色天堂在线视频| 国产成人欧美日韩在线电影| 国产成人精品电影久久久| 国产一级特黄a高潮片| 国产精品精品国产一区二区| 伊人久久五月天| 蜜桃精品成人影片| 成人在线tv视频| 欧美一区二区福利在线| 日韩大片一区二区| 九九热线视频只有这里最精品| 亚洲国产精品人人做人人爽| 少妇熟女一区二区| 91在线视频免费看| 久久尤物电影视频在线观看| 国产精品一区二区不卡视频| www香蕉视频| 激情六月婷婷久久| 成人国产在线视频| 一区二区小视频| 日韩一区精品视频| 国产suv精品一区二区| 午夜影院免费在线观看| 亚洲乱码视频| 97在线视频观看| 日韩av在线播| 亚洲高清成人| 欧美激情第一页xxx| 美女的奶胸大爽爽大片| 99久久激情| 日韩综合视频在线观看| 成熟人妻av无码专区| 久久成人av| 国产午夜一区二区| 国产精品国产三级国产专业不| 亚洲小说图片| 国产亚洲成av人片在线观看桃| 免费观看av网站| 九热爱视频精品视频| 亚洲视频在线免费观看| 美女洗澡无遮挡| 色琪琪久久se色| 久久亚洲精品成人| 国产小视频在线看| 国产精品嫩草99av在线| 日韩女优人人人人射在线视频| 色av性av丰满av| 奇米影视一区二区三区| 国产欧美一区二区三区视频| 国产又粗又猛又爽又黄的| 国产呦萝稀缺另类资源| 官网99热精品| 精品一二三区视频| 中文字幕字幕中文在线中不卡视频| 只有这里有精品| 蜜臀av在线| 欧美小视频在线观看| 美女黄色片视频| 欧美电影院免费观看| 精品国产一区二区三区忘忧草| 中国黄色片视频| 欧美亚洲激情| 欧美成人免费播放| 精品成人久久久| 日韩电影一区二区三区| 99影视tv| 九色视频在线播放| 亚洲自拍偷拍图区| 欧美日韩在线成人| 精品伊人久久| 亚洲欧洲国产一区| 国产极品国产极品| 久久综合影音| av成人观看| 国产黄色免费在线观看| 伊人色综合久久天天人手人婷| 无码人妻精品一区二区三区在线| 欧美日韩破处视频| 日韩电影中文 亚洲精品乱码| 99精品全国免费观看| 欧美日韩亚洲一区三区| 国产精品爱啪在线线免费观看 | 国产一区久久久| 精品欧美日韩在线| 高清全集视频免费在线| 色综合色狠狠天天综合色| 超碰中文字幕在线观看| 国产一区二区亚洲| 韩剧1988免费观看全集| hs视频在线观看| 欧美韩日一区二区三区四区| 欧美在线观看www| 日韩高清一区| 日韩一中文字幕| 日批视频免费在线观看| 成人av资源在线| 波多野结衣三级在线| 人人视频精品| 亚洲精品大尺度| 欧美精品色哟哟| 久久国产精品99精品国产| 欧美动漫一区二区| 成人一级福利| 精品国产污网站| 日本妇女毛茸茸| 韩国av一区二区三区在线观看| 欧美日韩高清在线一区| 欧亚av在线| 亚洲国产精品va在线| 免费无码毛片一区二区app| 精品制服美女丁香| 亚洲一区bb| 国产麻豆一区| 中文字幕综合在线| 少妇又紧又色又爽又刺激视频| 久久午夜色播影院免费高清 | 无码黑人精品一区二区| 日本va欧美va精品发布| 欧洲精品久久| 桃色一区二区| 一区二区av在线| 国产精品欧美综合| 国产精品毛片无遮挡高清| 国产区二区三区| 第九色区aⅴ天堂久久香| 国产精品678| 在线观看精品一区二区三区| 欧美日韩在线观看一区二区| 久久久精品成人| 奇米四色…亚洲| 一本一道久久a久久精品综合| 成人午夜在线| 日韩在线视频免费观看| 91成人一区二区三区| 中文字幕日韩一区| 久久精品一二三四| 激情欧美日韩一区| 精品国产一区二区三区四区精华 | 精品久久久免费| 久久丫精品国产亚洲av不卡| 99精品国产在热久久下载| 久久精品美女| 99精品国自产在线| 久久精品国产视频| www.五月激情| 精品久久久久久电影| 白白色免费视频| 久久国产精品第一页| 久久久天堂国产精品| 加勒比色综合久久久久久久久 | 国风产精品一区二区| 精品国产一区二区三区不卡蜜臂 | 300部国产真实乱| 超碰成人在线观看| 日韩美女毛茸茸| 理论片午午伦夜理片在线播放| 日韩精品一区国产麻豆| 久久久久女人精品毛片九一| 国产精品女同互慰在线看| wwwxxxx在线观看| 欧美亚洲一区| 日韩第一页在线观看| 色天下一区二区三区| 国产精品视频精品视频| av人人综合网| 综合av色偷偷网| 男人天堂综合网| 欧美丝袜丝交足nylons图片| 久草资源在线视频| 欧美国产一区在线| 天堂www中文在线资源| 日本少妇一区二区| 男人添女荫道口图片| 欧美午夜精品一区二区三区电影| 福利视频久久| 久久精品黄色| 欧美一级片在线播放| 国产调教视频在线观看| 亚洲日本欧美中文幕| 亚洲精品久久久蜜桃动漫| 日本道精品一区二区三区| 精品无码一区二区三区电影桃花| 国产欧美日韩在线视频| 少妇户外露出[11p]| 黄色精品一二区| 999精品网站| 国产欧美精品久久| 免费的av在线| 97精品国产福利一区二区三区| 久久精品二区| 91精品国产自产在线丝袜啪| 成人激情视频在线| 成人精品电影在线| 97久久伊人激情网| 免费污视频在线| 久久色在线播放| 在线观看a视频| 国产一区二区三区在线免费观看 | 伊人精品综合| 国产综合视频在线观看| 亚洲一区二区三区四区| 欧美自拍大量在线观看| 51漫画成人app入口| 色综合久久悠悠| 综合图区亚洲| 久热爱精品视频线路一| 欧美a在线看| 中文字幕视频在线免费欧美日韩综合在线看| 西西人体44www大胆无码| 欧美zozo另类异族| www.五月天激情| 日韩美女一区二区三区四区| 国产日韩免费视频| 91麻豆精品久久久久蜜臀| 久久久国产免费| 91九色02白丝porn| 成人毛片一区二区三区| 色妞www精品视频| 欧美a视频在线观看| 欧美日韩裸体免费视频| av资源免费观看| 精品国产精品自拍| 天天干天天干天天| 91高清视频在线| 免费黄色一级大片| 欧美日韩在线免费视频| 国产又黄又爽视频| 欧美一区二区三区播放老司机 | 亚洲欧美中文日韩在线| 九色在线免费| 最新日韩中文字幕| 麻豆视频在线| 色综合男人天堂| sm性调教片在线观看| 人人澡人人澡人人看欧美| 麻豆精品蜜桃| 国产在线精品一区免费香蕉| 日韩三级久久| 国产欧美日韩伦理| 亚洲亚洲免费| 亚洲精品中文字幕在线| 亚洲最新av| 成年人网站免费视频| 久久九九免费| 制服丝袜中文字幕第一页| 丁香激情综合五月| 亚洲天堂久久新| 国产精品视频观看| 欧美日韩国产精品综合| 欧美日韩一区二区免费在线观看| 激情网站在线观看| 欧美精品在线观看播放| 欧美综合视频在线| 国产小视频国产精品| 尤物视频在线看| 51色欧美片视频在线观看| jizz亚洲女人高潮大叫| 97久草视频| 国内成人精品| 黄色片免费在线观看视频| 亚洲中字黄色| 最好看的中文字幕| 91免费在线播放| 日韩在线观看免| 高潮白浆女日韩av免费看| 亚洲天天综合网| 亚洲国产91色在线| 视频免费一区| 57pao成人永久免费视频| 日韩国产91| 久久久久久国产精品免费免费| 国产大片一区| 国产又大又硬又粗| 国产成人免费视频网站| 久久成人激情视频| 婷婷久久综合九色综合绿巨人 | 在线国产99| 国产欧美二区| 苍井空张开腿实干12次| 欧美国产一区在线| 国产又爽又黄的视频| 欧美一区二区三区喷汁尤物| 成人免费黄色网页| 69视频在线播放| 亚洲成人偷拍| 一区二区三区四区免费视频| 亚洲免费影院| 亚洲日本久久久| 亚洲男人的天堂在线观看| 啪啪小视频网站| 亚洲乱码国产乱码精品精天堂| 羞羞的视频在线看| 成人免费视频在线观看超级碰| 精品国产一区一区二区三亚瑟 | 国产无套在线观看| 91麻豆精品国产91久久久更新时间| 国产精品天堂| 日韩av观看网址| 日韩av三区| 婷婷无套内射影院| 粉嫩aⅴ一区二区三区四区| 国产美女高潮视频| 欧美三级日韩三级| 高清性色生活片在线观看| 538国产精品一区二区免费视频| 成人看片黄a免费看视频| 精品人妻人人做人人爽| 国产精品综合网| 日韩在线视频网址| 欧美高清激情brazzers| 免费在线看黄色| 国产日韩换脸av一区在线观看| 成人3d动漫在线观看| 一道本视频在线观看| 国产视频911| 波多野结衣视频网址| 亚洲老头同性xxxxx| 国产高清不卡| 日韩欧美一区二区在线观看| 丝袜亚洲另类欧美| 久久午夜福利电影| 欧美最猛性xxxxx直播| 在线视频自拍| 91精品久久久久久久久久另类 | 亚洲欧洲精品天堂一级| 亚洲视频中文字幕在线观看| 久久久国产91| 日本在线成人| 国产美女网站在线观看| av成人动漫在线观看| 在线免费黄色av| 亚洲天堂一区二区三区| 欧美性www| 免费观看亚洲视频| 97se亚洲国产综合自在线不卡| 亚洲精品男人的天堂| 一区二区三区视频免费| 四虎视频在线精品免费网址| 麻豆传媒网站在线观看| 不卡的av中国片| 99久久久久久久久| 中文字幕在线成人| 亚洲午夜免费| 国产精品亚洲αv天堂无码| 中文字幕精品一区| 国产人妻精品一区二区三| 久久欧美在线电影| 黑丝美女一区二区| 中文字幕第22页| 欧美日韩国产黄| av在线免费一区| 99久久精品久久久久久ai换脸| 午夜宅男久久久| 日韩av手机在线免费观看| 亚洲电影av在线| 国产精品传媒麻豆hd| 久久综合久久久久| 国产欧美一区二区精品性| 99视频在线观看免费| 欧美一区二三区| 91精品国产91久久综合| 久久偷拍免费视频| 欧美日韩成人综合| 国产美女精品写真福利视频| 亚洲精品日韩在线观看| 国产精品小仙女| 无码一区二区三区在线观看| 欧美乱人伦中文字幕在线| 精品久久网站| 亚洲少妇18p| 7777精品久久久大香线蕉| 在线看的毛片| 国产精品igao激情视频| 亚洲国产精品ⅴa在线观看| 四虎免费在线观看|