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

深入理解MySQL binlog

數據庫 MySQL
今天我們聊了 MySQL 的 binlog,binlog 是 MySQL 最重要的日志文件。同時,由于 binlog 本身是二進制的,所以它的結構很神秘。好在 MySQL 為我們提供了一些命令去查看它的內容。

binlog 是 MySQL 最為重要的日志文件,MySQL 數據的備份恢復、主從復制都依賴 binlog,相比于其他日志文件,binlog 可以說是剛需了。

binlog 常見命令

為了對 binlog 有一個直觀的認知,我們先來看幾個命令。

首先,默認情況下 binlog 并不會開啟,我們可以通過下面的 show variabkes like‘log_bin’命令查看 binlog 的開啟狀態:

MySQL> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | OFF   |
+---------------+-------+

如果你需要開啟 binlog,可以在 my.ini 配置文件中可以加入下面的配置來開啟:

log_bin=/home/MySQL/bin-log.log

開啟 binlog 以后,我們就可以看看 binlog 的內容了。由于 binlog 本身是二進制文件,我們不能直接打開查看,但我們只關心 binlog 內容的意義而不是內容本身,因此我們可以用 MySQL 提供的如下命令來查看 binlog 內容:

show binlog events;

在 MySQL 中,輸入上述命令后,我們能看到如下所示的返回結果:

MySQL> show binlog events;
+----------------+------+-------------+-----------+-------------+---------------
| Log_name       | Pos  | Event_type  | Server_id | End_log_pos | Info
+----------------+------+-------------+-----------+-------------+---------------
| bin-log.000001 |    4 | Format_desc |         1 |         107 | Server ver: 5.7.29-log, Binlog ver: 4                         |
| bin-log.000001 |  99 | Query       |         1 |         175 | BEGIN
                                                |
| bin-log.000001 |  166 | Intvar      |         1 |         203 | INSERT_ID=9
                                                |
| bin-log.000001 |  200 | Query       |         1 |         315 |insert into user (age,name) values(1,"test") |
| bin-log.000001 |  331 | Xid         |         1 |         342 | COMMIT /* xid=22 */                                           |
+----------------+------+-------------+-----------+-------------+---------------

在這個返回的結果中,最重要的是 Event_type 和 Info 這兩個字段,其余字段不影響我們學習理解 binlog,就不贅述了。其中,Info 是命令的具體內容,可以看到 Info 里面是具體執行的 SQL 語句。而 Event_type 是事件類型,它的作用是記錄我們對 MySQL 所有變更操作的類型。

目前 MySQL 有 30 多種事件類型,歸類了你對 MySQL 的所有變更操作。這些操作日志的內容共同組成了我們的 binlog,其中 Event_type 是 binlog 日志中的一個字段,因此認識 Event_type 對理解 binlog 的內容非常重要,我們后面會挑選幾個 Event_type 類型介紹。

通過上面的返回的結果,我們可以看到,每個指令、每個動作都是一行記錄,而在 binlog 里每一行被稱作一個事件。也就是說 binlog 是由一個又一個事件組成的。

binlog 文件格式

在講解 binlog 事件之前,我們先看看 binlog 的文件格式分類。binlog 有 3 種格式類型,分別是 STATEMENT、ROW、MIXED:

  • STATEMENT

STATEMENT 是 binlog 的默認格式,我們后面對 binlog 的分析也是基于 STATEMENT 格式進行的。這個格式下,每一條修改數據的 sql 都會被記錄到 binlog 中,slave 端再根據 sql 語句重現。

但 STATEMENT 的缺點也很明顯,比如你用了 uuid 或者 now 這些函數,你在主庫上執行的結果并不是你在從庫執行的結果,這種隨時在變的函數會導致復制的數據不一致。

  • ROW

在 ROW 模式下,我們只需要知道行數據最終被修改成什么樣了,不會出現 STATEMENT 下動態函數的問題。但 ROW 的缺點是每行數據的變化結果都會被記錄,比如執行批量 update 語句,更新多少行數據就會產生多少條記錄,使 binlog 文件過大,而在 STATEMENT 格式下只會記錄一個 update 語句而已。

  • MIXED

MIXED 包含了 STATEMENT 和 ROW 模式,它會根據不同的情況自動使用 ROW 模式和 STATEMENT 模式,MIXED 除了包含 STATEMENT 和 ROW 特性之外,還有一些針對自身優化的特性,比如壓縮方式和一些特殊標記等等。

binlog 事件

在前面我們說了,binlog 由若干個事件組成,其中開頭的第一個事件叫 Format_description,中文翻譯為格式描述事件,文件結尾的最后一個事件叫做 rotate,中文翻譯為日志輪換事件。其中 Format_description 包含了 binlog 的服務器信息、文件狀態的關鍵信息等。

如果 MySQL 服務關閉或者重啟,那么 MySQL 進程會自動創建一個新的 binlog,同時寫入一個新的 Format_description。簡單來說 Format_description 就是一個文件頭。rotate 則包含下一個 binlog 的文件信息,它由 MySQL 寫完 binlog 后添加到 binlog 的末尾,注意 rotate 只有當 binlog 寫完才會有,binlog 沒有寫完的情況下是沒有 rotate 的。

binlog 的基礎結構如下,中間黃色部分就是我們執行的每一個事件。除了 select,剩下所有操作基本都會被記錄,binlog 不記錄 select 是因為 select 不會產生變更。

圖片圖片

binlog 對所有產生變化的操作做了分類,我們挑幾類常見的介紹一下:

  • QUERY

這是最常見的類型,執行更新語句時會生成此事件,包括:create,insert,update,delete 等等。比如我們手動執行一個插入語句,然后再使用上面提到的 show binlog events 看一下下面的 binlog 文件內容:

insert into test values(1,'yafeng');
| bin-log.000001 | 412 | Query       |         1 |         536 | insert into test values(1,'yafeng');                                                      |
| bin-log.000001 | 520 | Xid         |         1 |         563 | COMMIT /* xid=30 */

和前面的日志內容相比,我們可以看到,經過 insert 操作,binlog 文件中多了一個 Query 類型的記錄。

  • XID

事務提交時產生的事件,上面 insert 語句就是一個事務,因此除了 QUERY 記錄還產生了一條 XID 記錄。

  • FORMAT_DESCRIPTION

我們在前面提到了 FORMAT_DESCRIPTION,它是 binlog 的文件頭記錄。

  • ROTATE

當 binlog 寫完后會另啟一個新 binlog 來記錄日志,舊的 binlog 文件末尾會追加這個事件,什么情況下 binlog 會寫完呢?有 3 種情況,一個是手動執行 flush logs 命令,第二是重啟 MySQL,第三是 binlog 文件大于 max_binlog_size 參數配置的大小。

  • INTVAR

SQL 中使用了 AUTO_INCREMENT 的字段,就會產生這個事件。

  • STOP

當 MySQL 停止時會生成此事件,是的,你沒聽錯,連 MySQL 的停止也會被記錄到 binlog。

  • RAND

SQL 中包含隨機數函數的語句將產生 RAND 事件。

以上幾個事件是 STATEMENT 格式下常見的幾個,還有一些事件工作在 ROW 和 MIXED 格式下。binlog 在記錄每個事件的時候也使用了 header 和 body 的格式,即 header 存儲元數據,body 存儲具體執行的語句。當然這并不是很重要,因為計算機領域中從網絡協議到虛擬機到操作系統幾乎都采用了類似的設計。下面我們來介紹 binlog 的變種文件 relay log。

relay log

relay log 中文名是中繼日志,在主從復制的時候會輔助 binlog 完成復制任務。relay log 有著和 binlog 類似的格式和結構,可以看作是 binlog 的親兄弟。唯一不同的地方是 relay log 多了 master.info 和 relay-log.info 兩個文件。

master.info 和 relay-log.info 的文件內容非常小,一般以 info 為后綴結尾的文件都不大,里面記錄了文件的指針。其中 master.info 記錄 I/O 線程讀取 binlog 的實時位置指針,relay-log.info 記錄了 SQL 線程讀取 relay log 的實時文件指針。 I/O 線程和 SQL 線程可以看作是在從庫上工作的兩個流水線工人,I/O 線程負責原材料的運輸,寫入本地的 relay log 中,SQL 線程負責從 relay log 獲取原材料并加工。

現在我們再來回顧一下主從復制的流程,實際上這個流程有很多隱藏細節,既然我們今天提到了 master.info 和 relay-log.info,我們就來深入講一下這個流程:

  1. 首先主庫收到客戶端請求語句,在語句結束之前向 binlog 寫入事件。
  2. 之后,從庫連接到主庫,主庫的 dump 線程從 binlog 讀取日志并發送到從庫的 IO 線程。
  3. I/O 線程從 master.info 讀取到上一次寫入的最后的位置。
  4. I/O 線程寫入日志到 relay log,更新 master.info 的最后位置。
  5. SQL 線程從 relay-log.info 讀取進上一次讀取的位置,然后在數據庫中執行 sql,執行完更新 relay-log.info 的最后位置。

總結

今天我們聊了 MySQL 的 binlog,binlog 是 MySQL 最重要的日志文件。同時,由于 binlog 本身是二進制的,所以它的結構很神秘。好在 MySQL 為我們提供了一些命令去查看它的內容。

通過今天的學習,我們也知道了 binlog 有 STATEMENT、ROW 和 MIXED 3 種模式,不同的格式下會有不同的事件,他們各有優缺點,MySQL 默認使用 STATEMENT 模式。

每個 binlog 文件都是由不同的事件組成的,幾乎所有變更操作都是事件。MySQL 有 30 多種事件,其中我們介紹了 QUERY、XID、FORMAT_DESCRIPTION 等幾個事件。binlog 有個孿生兄弟 relay log,這是從庫從主庫克隆過來的 binlog,它只是用在主從復制場景。relay log 有兩個 info 文件 master.info 和 relay-log.info,其中 master.info 服務于從庫的 I/O 線程,relay-log.info 服務于從庫的 SQL 線程。結合這兩個 info 文件,我們回顧了主從復制的完成過程,加深了印象。

責任編輯:武曉燕 來源: 程序員技術充電站
相關推薦

2016-12-08 15:36:59

HashMap數據結構hash函數

2020-07-21 08:26:08

SpringSecurity過濾器

2010-06-01 15:25:27

JavaCLASSPATH

2020-03-26 16:40:07

MySQL索引數據庫

2020-03-17 08:36:22

數據庫存儲Mysql

2023-10-13 13:30:00

MySQL鎖機制

2009-09-25 09:14:35

Hibernate日志

2021-02-17 11:25:33

前端JavaScriptthis

2023-10-19 11:12:15

Netty代碼

2013-09-22 14:57:19

AtWood

2024-10-28 08:28:59

2017-08-15 13:05:58

Serverless架構開發運維

2017-01-10 08:48:21

2020-09-23 10:00:26

Redis數據庫命令

2025-06-05 05:51:33

2024-02-21 21:14:20

編程語言開發Golang

2019-06-25 10:32:19

UDP編程通信

2023-10-08 08:53:36

數據庫MySQL算法

2021-09-26 09:59:14

MYSQL開發數據庫

2022-11-04 09:43:05

Java線程
點贊
收藏

51CTO技術棧公眾號

国产亚洲一区在线| 精品美女一区| 国产亚洲精品福利| 国产日韩欧美91| 亚洲色图综合区| 超碰成人97| 欧美在线免费观看视频| 三年中文高清在线观看第6集| 亚洲第一页视频| 久久夜色精品| 欧美极品少妇xxxxⅹ喷水| 免费看黄色的视频| 色播一区二区| 欧美天堂亚洲电影院在线播放| 300部国产真实乱| 黄色电影免费在线看| 日韩va亚洲va欧美va久久| 欧美肥婆姓交大片| 调教驯服丰满美艳麻麻在线视频| 97品白浆高清久久久久久| 91久久精品一区二区三区| 成人手机在线播放| av资源种子在线观看| 成人av在线网| 成人美女免费网站视频| 精品久久久久久久久久久久久久久久| 亚洲欧美在线专区| 一本一道久久a久久精品逆3p| 国产精品99久久久精品无码| aaaa欧美| 色爱区综合激月婷婷| 黄页网站大全在线观看| jizz性欧美| 国产精品三级电影| 狠狠色狠狠色综合人人| www.国产黄色| 国产真实乱偷精品视频免| 国产国语videosex另类| 成人午夜淫片100集| 欧美日韩精品免费观看视频完整| 中文字幕久久久| www..com.cn蕾丝视频在线观看免费版 | 日韩欧美亚洲一区二区三区| 中文字幕一区二区精品区| 中文字幕亚洲无线码a| 免费人成又黄又爽又色| 亚洲理论电影片| 日韩经典一区二区三区| 久久久久亚洲AV成人无码国产| 一区二区免费| 日韩一二三区不卡| 久久久久久无码精品人妻一区二区| 老司机精品视频网| 欧美日韩大陆在线| 天堂av在线8| 高清一区二区| 51精品国自产在线| 992tv人人草| 一区二区日韩| 日韩成人中文电影| 欧美老熟妇乱大交xxxxx| 伊人久久大香线蕉| 亚洲色图校园春色| 91麻豆制片厂| 久久久久久久久久久久久久| 久久精品视频99| 亚洲国产精品免费在线观看| 最新精品国产| 97视频国产在线| 国产嫩bbwbbw高潮| 男女视频一区二区| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 久久网站免费观看| 久久久精品美女| 澳门黄色一级片| 亚洲高清资源| 2019中文字幕在线| 最近日韩免费视频| 国产精品亚洲а∨天堂免在线| 99国产在线| 日本一区高清| 中文字幕精品综合| 久久免费视频2| av中文资源在线资源免费观看| 日韩欧美在线看| 污污网站在线观看视频| 亚洲天堂av资源在线观看| 亚洲国产精品美女| 亚洲一二三四视频| 日韩精品一区二区三区免费观影 | 精品国产免费一区二区三区香蕉| 中文字幕一区二区三区乱码不卡| gogogogo高清视频在线| 精品一区中文字幕| 91黄在线观看| 欧美成熟毛茸茸| 青青青伊人色综合久久| 成人av资源| 狠狠色伊人亚洲综合网站l| 青青草精品视频| 国产精品欧美一区二区| а√天堂资源在线| 久久精品欧美一区二区三区不卡 | 高清一区二区三区日本久| 在线免费黄色网| 国产成人愉拍精品久久| 欧美挠脚心网站| 成人免费视频免费观看| 涩涩涩999| av成人 com a| 亚洲成av人片在线| 中文字幕丰满乱码| 午夜先锋成人动漫在线| 久久精品久久久久久| 极品久久久久久久| 自拍偷拍亚洲图片| 欧美精品久久久久久久多人混战 | www.国产免费| 久久er99精品| 欧美性天天影院| 老司机精品影院| 在线一区二区三区| 中国极品少妇videossexhd | 亚洲精品一区二区三区香蕉| 国产欧美小视频| 日韩精品视频网| 黄色91av| 免费在线观看av电影| 亚洲色图欧美在线| 日日摸天天爽天天爽视频| www.欧美| 一本一本久久a久久精品综合小说| 一区二区三区视频免费看| 久久伊人亚洲| 欧美一区二区高清在线观看| 91伦理视频在线观看| 色综合激情五月| 男女黄床上色视频| 亚洲一区中文| 欧美日本一区二区三区| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久视频www| 天天操天天干天天综合网| 性猛交╳xxx乱大交| 亚洲欧美在线专区| 亚洲中国色老太| 黄色免费在线看| 国产偷国产偷精品高清尤物| 黄色片视频在线免费观看| 第四色男人最爱上成人网| 精品国产亚洲在线| 福利一区二区三区四区| 国产精品影音先锋| 亚洲国产欧美日韩| 巨大黑人极品videos精品| 最近免费中文字幕视频2019| 亚洲一区二区激情| 亚洲欧美影音先锋| 中文字幕在线视频一区二区| 欧美国产免费| av成人观看| 国产美女视频一区二区三区| 欧美自拍丝袜亚洲| 天天操天天摸天天舔| 激情五月激情综合网| 日本丰满少妇黄大片在线观看| 久久一级大片| 中文字幕亚洲综合久久筱田步美| 一级成人免费视频| 亚洲女人的天堂| fc2成人免费视频| 亚洲免费中文| 一本色道久久综合亚洲二区三区| 成人污污www网站免费丝瓜| 欧美日韩成人在线观看| 凸凹人妻人人澡人人添| 欧美在线观看18| 在线免费看av网站| 成人av综合一区| 无需播放器的av| 欧美视频成人| 欧美人xxxxx| 国产精品va视频| 国内精品国产三级国产在线专| 青青草超碰在线| 欧美精品视频www在线观看| 国产在线拍揄自揄拍| 国产亚洲精品bt天堂精选| 青娱乐精品在线| 亚洲一区成人| 精品日韩在线播放| 最新亚洲精品| 99久久综合狠狠综合久久止| 伊人久久综合一区二区| 欧美成年人网站| 美州a亚洲一视本频v色道| 日韩一区二区在线看片| 国产高清中文字幕| 一区二区三区四区不卡视频| 日韩在线免费观看av| 国产精品一级片| 天天干天天干天天干天天干天天干| 国产综合婷婷| 亚洲永久一区二区三区在线| 林ゆな中文字幕一区二区| 成人免费网站在线看| 成人免费看视频网站| 欧美老女人在线视频| 成人在线免费公开观看视频| 精品第一国产综合精品aⅴ| 一区二区视频在线免费观看| 偷拍日韩校园综合在线| 午夜精品福利在线视频| 国产女人aaa级久久久级| 无码国产69精品久久久久网站| 精一区二区三区| 玩弄japan白嫩少妇hd| 亚洲国产免费看| 2021狠狠干| 色婷婷一区二区三区| 欧美亚洲爱爱另类综合| 精品在线网站观看| 99在线观看| 国产免费区一区二区三视频免费 | 欧美亚洲黄色| 国产成人精品电影| 日本不良网站在线观看| 久久久久久中文| 羞羞视频在线观看不卡| 日韩色av导航| 日韩免费网站| 中文字幕综合一区| 岛国最新视频免费在线观看| 亚洲精品小视频| 欧洲伦理片一区 二区 三区| 亚洲成人精品在线| 三级视频在线看| 亚洲激情视频在线观看| 囯产精品久久久久久| 欧美tk—视频vk| 亚洲美女性生活| 精品对白一区国产伦| 你懂的网站在线| 日韩成人在线视频网站| 三级国产在线观看| 亚洲欧美日韩直播| 懂色av中文在线| 正在播放国产一区| 欧美黑人激情| 久久久精品免费| 欧美另类tv| 午夜剧场成人观在线视频免费观看| 福利写真视频网站在线| 97精品一区二区三区| 热三久草你在线| 国产成人在线精品| 91av一区| 亚洲在线视频福利| 国产图片一区| 日本不卡高清视频一区| 成功精品影院| 久久久久久久久一区| 91亚洲无吗| 欧美精品在线一区| 日韩在线理论| 欧美黄色免费网址| 在线综合亚洲| 91人人澡人人爽人人精品| 国产在线麻豆精品观看| 国产婷婷在线观看| 99re在线视频这里只有精品| 精品国产成人亚洲午夜福利| 国产精品免费视频一区| 麻豆成人在线视频| 日韩欧美在线播放| 国产精品无码白浆高潮| 亚洲第一天堂无码专区| 国产福利电影在线| 久久天堂电影网| 涩涩涩视频在线观看| 国产美女久久久| 精品国产影院| 亚洲精品一区二区三区av| 午夜亚洲福利| 亚洲精品中文字幕无码蜜桃| 国产一区二区在线影院| 五月开心播播网| 国产精品黄色在线观看| 日韩三级免费看| 欧美日韩国产另类一区| 日本毛片在线观看| 欧美精品一区二区三区蜜臀 | 精品久久ai| 亚洲一区二区三区在线观看视频| 海角社区69精品视频| 能看的毛片网站| 成人免费av在线| 日韩欧美在线视频播放| 欧美午夜精品久久久久久久| 国产精品免费无遮挡| 亚洲国产成人精品久久久国产成人一区 | 国产精区一区二区| 日韩av高清| 一本一道久久综合狠狠老精东影业| 在线观看免费视频高清游戏推荐| gogogo免费视频观看亚洲一| 亚洲一二三在线观看| 色噜噜夜夜夜综合网| 午夜精品久久久久久久99| 自拍视频国产精品| 中国字幕a在线看韩国电影| 91九色露脸| 午夜影院欧美| 密臀av一区二区三区| aaa欧美日韩| 久久久久亚洲av无码专区| 欧美日韩激情一区二区| 免费在线观看污视频| 国外成人在线播放| 视频免费一区二区| av不卡在线免费观看| 蜜臀av一区二区| 69精品无码成人久久久久久| 午夜精品久久久| 内射后入在线观看一区| 欧美另类在线观看| 久久精品一级| 亚洲自拍偷拍一区二区三区| 免费观看在线综合| 在线视频第一页| 在线免费视频一区二区| 美女毛片在线看| 国产成人aa精品一区在线播放| 色愁久久久久久| 男人天堂1024| 91美女精品福利| 国内自拍视频在线播放| 日韩av在线播放资源| 免费在线小视频| 久久综合九九| 玖玖在线精品| 男人舔女人下部高潮全视频 | 性欧美办公室18xxxxhd| 大桥未久女教师av一区二区| 国产精品久久久久久久乖乖| 国产成人精品1024| 国产精品50页| 亚洲黄在线观看| 在线毛片观看| 欧美精品与人动性物交免费看| 午夜在线视频一区二区区别| 变态另类丨国产精品| 欧美日韩一区二区精品| 免费在线国产| 国产欧美一区二区三区久久人妖| 区一区二视频| 亚欧精品在线视频| 亚洲综合色自拍一区| 视频污在线观看| 国产v综合v亚洲欧美久久| 狠狠做深爱婷婷综合一区| 日本中文字幕高清| 亚洲日穴在线视频| 亚洲精品无码久久久| 538国产精品视频一区二区| 竹菊久久久久久久| 日本人69视频| 亚洲一区二区三区激情| 男女污污视频在线观看| 国产免费一区二区三区香蕉精| 欧美亚洲大陆| 日韩一区二区三区久久| 亚洲综合一区在线| 日韩欧美亚洲系列| 国产一区二区在线播放| 国产精品vip| 欧美特级黄色录像| 欧美久久久一区| 91丝袜在线| 神马影院我不卡午夜| 国产精品系列在线观看| 五月婷婷亚洲综合| 中文字幕日韩av综合精品| 一区二区三区国产好| 黄色a级片免费| 亚洲精品自拍动漫在线| 久青青在线观看视频国产| 91香蕉国产在线观看| 亚洲一区一卡| 劲爆欧美第一页| 在线视频中文亚洲| 久久久久观看| 日韩av加勒比| 色哟哟精品一区| bl视频在线免费观看| 亚洲乱码一区二区三区| a美女胸又www黄视频久久| 中文字幕一区二区久久人妻| 久久免费少妇高潮久久精品99| 日本一区二区三区视频|