欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

MySQL的binlog怎么使用

這篇文章主要介紹了MySQL的binlog怎么使用的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇MySQL的binlog怎么使用文章都會有所收獲,下面我們一起來看看吧。

成都創(chuàng)新互聯(lián)服務(wù)項目包括洪江管理區(qū)網(wǎng)站建設(shè)、洪江管理區(qū)網(wǎng)站制作、洪江管理區(qū)網(wǎng)頁制作以及洪江管理區(qū)網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,洪江管理區(qū)網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到洪江管理區(qū)省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

MySQL的binlog怎么使用

MySQL 中的日志比較重要的有 binlog(歸檔日志)、redo log(重做日志)以及 undo log,那么跟我們本文相關(guān)的主要是 binlog。

1. binlog

binlog 我們中文一般稱作歸檔日志,如果大家看過松哥之前發(fā)的 MySQL 主從搭建,應(yīng)該對這個日志有印象,當(dāng)我們搭建 MySQL 主從的時候就離不開 binlog。

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

  • binlog 是一種邏輯日志,他里邊所記錄的是一條 SQL 語句的原始邏輯,例如給某一個字段 +1,注意這個區(qū)別于 redo log 的物理日志(在某個數(shù)據(jù)頁上做了什么修改)。

  • binlog 文件寫滿后,會自動切換到下一個日志文件繼續(xù)寫,而不會覆蓋以前的日志,這個也區(qū)別于 redo log,redo log 是循環(huán)寫入的,即后面寫入的可能會覆蓋前面寫入的。

  • 一般來說,我們在配置 binlog 的時候,可以指定 binlog 文件的有效期,這樣在到期后,日志文件會自動刪除,這樣避免占用較多存儲空間。

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

  • MySQL 主從復(fù)制時:在主機(jī)上開啟 binlog,主機(jī)將 binlog 同步給從機(jī),從機(jī)通過 binlog 來同步數(shù)據(jù),進(jìn)而實(shí)現(xiàn)主機(jī)和從機(jī)的數(shù)據(jù)同步。

  • MySQL 數(shù)據(jù)恢復(fù),通過使用 mysqlbinlog 工具再結(jié)合 binlog 文件,可以將數(shù)據(jù)恢復(fù)到過去的某一時刻。

2. 開啟 binlog

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

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

MySQL的binlog怎么使用

這個 OFF 就表示 binlog 是一個關(guān)閉狀態(tài),沒有開啟,接下來我們來開啟 binlog。

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

MySQL的binlog怎么使用

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

# 這個參數(shù)表示啟用 binlog 功能,并指定 binlog 的存儲目錄
log-bin=javaboy_logbin
# 設(shè)置一個 binlog 文件的最大字節(jié)
# 設(shè)置最大 100MB
max_binlog_size=104857600
# 設(shè)置了 binlog 文件的有效期(單位:天)
expire_logs_days = 7
# binlog 日志只記錄指定庫的更新(配置主從復(fù)制的時候會用到)
#binlog-do-db=javaboy_db
# binlog 日志不記錄指定庫的更新(配置主從復(fù)制的時候會用到)
#binlog-ignore-db=javaboy_no_db
# 寫緩存多少次,刷一次磁盤,默認(rèn) 0 表示這個操作由操作系統(tǒng)根據(jù)自身負(fù)載自行決定多久寫一次磁盤
# 1 表示每一條事務(wù)提交都會立即寫磁盤,n 則表示 n 個事務(wù)提交才會寫磁盤
sync_binlog=0
# 為當(dāng)前服務(wù)取一個唯一的 id(MySQL5.7 之后需要配置)
server-id=1

各項配置的含義已經(jīng)在注視中說明了。截圖如下:

MySQL的binlog怎么使用

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

docker restart mysql1

重啟之后,再次執(zhí)行 show variables like 'log_bin%'; 即可看到 binlog 已經(jīng)開啟了。

MySQL的binlog怎么使用

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

  • log_bin_basename:這個是將來產(chǎn)生的 binlog 日志文件的名稱前綴,換句話說,根據(jù)大家目前所看到的配置,將來產(chǎn)生的 binlog 日志文件名為 javaboy_logbin.xxx,這個文件中將會用來記錄所有的 DDL 和 DML 語句事件。

  • log_bin_index:這個是 binlog 的索引文件,保存了所有 binlog 的目錄,因為 binlog 可能會有多個。我們可以來查看一下現(xiàn)在的 javaboy_logbin.index 文件:

MySQL的binlog怎么使用

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

3. 常見 binlog 操作

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

查看所有 binlog 日志

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

show master logs;

MySQL的binlog怎么使用

可以看到,我這里目前只有一個日志文件,文件名為 javaboy_logbin.000001,F(xiàn)ile_size 表示這個文件占用的字節(jié)大小是 154。

查看 master 狀態(tài)

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

MySQL的binlog怎么使用

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

刷新 binlog

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

MySQL的binlog怎么使用

由上圖可以看到,我們刷新日志之后,再通過 show master logs 去查看日志,發(fā)現(xiàn)日志文件已經(jīng)多了一個新產(chǎn)生的了,然后再通過 show master status 去查看最新的日志文件信息,發(fā)現(xiàn)也已經(jīng)變?yōu)?javaboy_logbin.000002。

重置 binlog

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

MySQL的binlog怎么使用

查看 binlog

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

MySQL的binlog怎么使用

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

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

MySQL的binlog怎么使用

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

產(chǎn)生的日志文件中有一個 end_log_pos 是日志文件的 pos 點(diǎn),這個將來在數(shù)據(jù)恢復(fù)的時候有用。

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

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

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

  • log_name:可以指定要查看的 binlog 日志文件名,如果不指定的話,表示查看最早的 binlog 文件。

  • pos:從哪個 pos 點(diǎn)開始查看,凡是 binlog 記錄下來的操作都有一個 pos 點(diǎn),這個其實(shí)就是相當(dāng)于我們可以指定從哪個操作開始查看日志,如果不指定的話,就是從該 binlog 的開頭開始查看。

  • offset:這是是偏移量,不指定默認(rèn)就是 0。

  • row_count:查看多少行記錄,不指定就是查看所有。

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

show binlog events in 'javaboy_logbin.000001';

MySQL的binlog怎么使用

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

  • 在 Pos 219-322 之間創(chuàng)建了一個庫。

  • 在 Pos 387-537 之間創(chuàng)建了一張表。

  • 在 Pos 677-780 之間添加了一條記錄。

4. 數(shù)據(jù)恢復(fù)實(shí)戰(zhàn)

好啦,有了前面的基礎(chǔ)知識準(zhǔn)備,接下來松哥來給大家手把手演示一個刪庫/恢復(fù)的場景。

我先來說說我這個數(shù)據(jù)庫目前的情況。

這是一個新安裝的數(shù)據(jù)庫,里邊我新建了一個數(shù)據(jù)庫名為 javaboy,javaboy 庫中新建了一張表名為 user,user 中有兩條記錄,如下:

MySQL的binlog怎么使用

現(xiàn)在假設(shè)我們定期(每周三凌晨三點(diǎn))對數(shù)據(jù)庫進(jìn)行備份。

現(xiàn)在凌晨三點(diǎn)了,數(shù)據(jù)庫自動備份開始了,我們通過如下命令將數(shù)據(jù)庫備份成 SQL 腳本,如下:

mysqldump -uroot -p --flush-logs --lock-tables -B javaboy>/root/javaboy.bak.sql

MySQL的binlog怎么使用

這里有幾個參數(shù)跟大家解釋下:

  • -u、-p 這兩個就不用說了。

  • --flush-logs:這個表示在導(dǎo)出之前先刷新 binlog,刷新 binlog 之后將會產(chǎn)生新的 binlog 文件,后續(xù)的操作都存在新的 binlog 中。

  • --lock-tables:這個表示開始導(dǎo)出前,鎖定所有表。需要注意的是當(dāng)導(dǎo)出多個數(shù)據(jù)庫時,--lock-tables 分別為每個數(shù)據(jù)庫鎖定表,因此這個選項不能保證導(dǎo)出文件中的表在數(shù)據(jù)庫之間的邏輯一致性,不同數(shù)據(jù)庫表的導(dǎo)出狀態(tài)可以完全不同。

  • -B:這個表示指定導(dǎo)出的數(shù)據(jù)庫名稱,如果使用 --all-databases 或者 -A 代替 -B 表示導(dǎo)出所有的數(shù)據(jù)庫。

以上命令執(zhí)行完成后,會在 /root 目錄下生成一個 javaboy.bak.sql 文件,該文件就是備份的 sql 文件了。

這是星期三凌晨三點(diǎn)發(fā)生的事情。

接下來到了星期四早上,來上班了,一頓操作后,往數(shù)據(jù)庫中又添加了兩條操作,如下:

MySQL的binlog怎么使用

接下來,小 X 今天跟領(lǐng)導(dǎo)吵架了很不爽,決定刪除跑路:

MySQL的binlog怎么使用

領(lǐng)導(dǎo)發(fā)現(xiàn)了大驚,當(dāng)即要求立馬恢復(fù)數(shù)據(jù)。這時候該你表現(xiàn)了。

首先,我們有星期三凌晨的備份文件,先用那個文件進(jìn)行數(shù)據(jù)恢復(fù):

MySQL的binlog怎么使用

恢復(fù)之后,現(xiàn)在到星期三早上凌晨三點(diǎn)的數(shù)據(jù)有了。

從星期三早上凌晨三點(diǎn)到星期四的數(shù)據(jù)現(xiàn)在沒了。

這個時候我們就要借助于 binlog 來恢復(fù)了。大家還記得,我們星期三凌晨三點(diǎn)執(zhí)行備份的時候,用了一個參數(shù)叫做 --flush-logs,使用了該參數(shù)表示從備份那一刻起,新的 binlog 將產(chǎn)生在一個新的日志文件中,對于我們這里來說,新的 binlog 文件當(dāng)然就是 javaboy_logbin.000002 了,我們?nèi)ゲ榭匆幌略撐募?/p>

show binlog events in 'javaboy_logbin.000002';

我這里生成的該文件比較長,我截取其中一部分:

MySQL的binlog怎么使用

可以看到,在 764-865 這個 Pos 中發(fā)生了刪庫跑路事件,那么我們只需要回放該文件將數(shù)據(jù)恢復(fù)到 764 這個位置即可。

由于 javaboy_logbin.000002 文件是在星期三凌晨三點(diǎn)備份之后產(chǎn)生的新文件,因此這個文件從起始到 764 這個 Pos 之間的操作,就是星期三凌晨三點(diǎn)到刪庫之前的操作了。

那么我們來看下通過 binlog 來恢復(fù)數(shù)據(jù)的命令:

mysqlbinlog /var/lib/mysql/javaboy_logbin.000002 --stop-position=764 --database=javaboy | mysql -uroot -p

那么這里涉及到兩個參數(shù):

  • --stop-position=764 表示恢復(fù)到 764 這個 Pos,不指定的話就把按整個文件恢復(fù)了,如果按當(dāng)前文件恢復(fù)的話,由于這個 binlog 文件中有刪除數(shù)據(jù)庫的語句,那么就會導(dǎo)致執(zhí)行完該 binlog 之后,javaboy 庫又被刪除了。

  • --database=javaboy 表示恢復(fù) javaboy 這個庫。

另外還有一個我們這里沒用到的參數(shù)叫做 --start-position,這個表示起始的 Pos,不指定的話表示從頭開始數(shù)據(jù)恢復(fù)。

好啦,弄完之后,再來查看數(shù)據(jù)庫:

MySQL的binlog怎么使用

數(shù)據(jù)恢復(fù)啦~

注意:所有操作之前,記得該備份就備份(防止你操作錯了又回不去),松哥為了省事上面省略了一些備份操作。

關(guān)于“MySQL的binlog怎么使用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“MySQL的binlog怎么使用”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站名稱:MySQL的binlog怎么使用
當(dāng)前鏈接:http://aaarwkj.com/article20/pegdjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、App開發(fā)、微信小程序、軟件開發(fā)、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
国产女技师口爆在线观看| 成熟性性生活免费视频| 午夜福利一区二区在线| 日本一区二区三区免费黄视频| 粉嫩护士国产在线观看| 亚洲小说欧美激情另类| 一区二区三区深夜福利| 精精国产xxxx视频在线不卡| 日韩欧美另类精品在线| 日韩欧美一二区久久麻豆| 久久精品亚洲毛片美女极品| 一本久道久久综合久久鬼色| 久久精品国语少妇对白| 成人激情电影免费在线| 中文字幕日本专区人妻| 日本高清久久一区二区三区| 99精品国产综合久久麻豆| 国产精品国产不卡在线| 久热在线这里只有精品| 国产在线高清精品二区| 成年人免费观看黄色片| 国产三级在线播放完整| 国产女主播精品视频一区| 日韩欧美 高清一区| 亚洲欧美国产日韩天堂区| 亚洲一区二区三区精品乱码| 久久一区二区三区播放| 大胸妇女引诱老师在线观看| 日韩人妻中文字幕在线视频| 亚洲毛片免费视频久久| 久久精品一区二区三区不卡| 91色综合久久久久婷婷| 91嫩草国产在线观看| 国产大学生情侣在线视频| 色一区欧美一区亚洲一区| 免费在线av一区二区| 声入人心第一季在线观看| 日韩中文字幕免费一区二区| 国产乱国产乱老熟部视频| 精品视频一区二区三区在线观看| 久久视频在线播放视频|