电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

mysql中的7種日志小結(jié)

瀏覽:2日期:2023-10-04 17:01:03

MySQL中有以下日志文件,分別是:

1:重做日志(redo log)2:回滾日志(undo log)3:二進制日志(binlog)4:錯誤日志(errorlog)5:慢查詢?nèi)罩荆╯low query log)6:一般查詢?nèi)罩荆╣eneral log)7:中繼日志(relay log)

其中重做日志和回滾日志與事務操作息息相關,二進制日志也與事務操作有一定的關系,這三種日志,對理解MySQL中的事務操作有著重要的意義。

一、重做日志(redo log)

作用:確保事務的持久性。redo日志記錄事務執(zhí)行后的狀態(tài),用來恢復未寫入data file的已成功事務更新的數(shù)據(jù)。防止在發(fā)生故障的時間點,尚有臟頁未寫入磁盤,在重啟mysql服務的時候,根據(jù)redo log進行重做,從而達到事務的持久性這一特性。

內(nèi)容:物理格式的日志,記錄的是物理數(shù)據(jù)頁面的修改的信息,其redo log是順序?qū)懭雛edo log file的物理文件中去的。

什么時候產(chǎn)生:事務開始之后就產(chǎn)生redo log,redo log的落盤并不是隨著事務的提交才寫入的,而是在事務的執(zhí)行過程中,便開始寫入redo log文件中。

什么時候釋放:當對應事務的臟頁寫入到磁盤之后,redo log的使命也就完成了,重做日志占用的空間就可以重用(被覆蓋)。

對應的物理文件:默認情況下,對應的物理文件位于數(shù)據(jù)庫的data目錄下的ib_logfile1&ib_logfile2innodb_log_group_home_dir 指定日志文件組所在的路徑,默認./ ,表示在數(shù)據(jù)庫的數(shù)據(jù)目錄下。innodb_log_files_in_group 指定重做日志文件組中文件的數(shù)量,默認2

關于文件的大小和數(shù)量,由以下兩個參數(shù)配置:innodb_log_file_size 重做日志文件的大小。innodb_mirrored_log_groups 指定了日志鏡像文件組的數(shù)量,默認1

其他:很重要一點,redo log是什么時候?qū)懕P的?前面說了是在事物開始之后逐步寫盤的。之所以說重做日志是在事務開始之后逐步寫入重做日志文件,而不一定是事務提交才寫入重做日志緩存,原因就是,重做日志有一個緩存區(qū)Innodb_log_buffer,Innodb_log_buffer的默認大小為8M(這里設置的16M),Innodb存儲引擎先將重做日志寫入innodb_log_buffer中

mysql中的7種日志小結(jié)

然后會通過以下三種方式將innodb日志緩沖區(qū)的日志刷新到磁盤

Master Thread 每秒一次執(zhí)行刷新Innodb_log_buffer到重做日志文件。

每個事務提交時會將重做日志刷新到重做日志文件。

當重做日志緩存可用空間 少于一半時,重做日志緩存被刷新到重做日志文件

由此可以看出,重做日志通過不止一種方式寫入到磁盤,尤其是對于第一種方式,Innodb_log_buffer到重做日志文件是Master Thread線程的定時任務。

因此重做日志的寫盤,并不一定是隨著事務的提交才寫入重做日志文件的,而是隨著事務的開始,逐步開始的。

另外引用《MySQL技術(shù)內(nèi)幕 Innodb 存儲引擎》(page37)上的原話:

即使某個事務還沒有提交,Innodb存儲引擎仍然每秒會將重做日志緩存刷新到重做日志文件。

這一點是必須要知道的,因為這可以很好地解釋再大的事務的提交(commit)的時間也是很短暫的。

二、回滾日志(undo log)

作用:保證數(shù)據(jù)的原子性,保存了事務發(fā)生之前的數(shù)據(jù)的一個版本,可以用于回滾,同時可以提供多版本并發(fā)控制下的讀(MVCC),也即非鎖定讀

內(nèi)容:邏輯格式的日志,在執(zhí)行undo的時候,僅僅是將數(shù)據(jù)從邏輯上恢復至事務之前的狀態(tài),而不是從物理頁面上操作實現(xiàn)的,這一點是不同于redo log的。

什么時候產(chǎn)生:事務開始之前,將當前是的版本生成undo log,undo 也會產(chǎn)生 redo 來保證undo log的可靠性

什么時候釋放:當事務提交之后,undo log并不能立馬被刪除,而是放入待清理的鏈表,由purge線程判斷是否由其他事務在使用undo段中表的上一個事務之前的版本信息,決定是否可以清理undo log的日志空間。

對應的物理文件:MySQL5.6之前,undo表空間位于共享表空間的回滾段中,共享表空間的默認的名稱是ibdata,位于數(shù)據(jù)文件目錄中。MySQL5.6之后,undo表空間可以配置成獨立的文件,但是提前需要在配置文件中配置,完成數(shù)據(jù)庫初始化后生效且不可改變undo log文件的個數(shù)如果初始化數(shù)據(jù)庫之前沒有進行相關配置,那么就無法配置成獨立的表空間了。

關于MySQL5.7之后的獨立undo 表空間配置參數(shù)如下:innodb_undo_directory = /data/undospace/ ?undo獨立表空間的存放目錄 innodb_undo_logs = 128 ?回滾段為128KB innodb_undo_tablespaces = 4 ?指定有4個undo log文件如果undo使用的共享表空間,這個共享表空間中又不僅僅是存儲了undo的信息,共享表空間的默認為與MySQL的數(shù)據(jù)目錄下面,其屬性由參數(shù)innodb_data_file_path配置。

mysql中的7種日志小結(jié)

其他:undo是在事務開始之前保存的被修改數(shù)據(jù)的一個版本,產(chǎn)生undo日志的時候,同樣會伴隨類似于保護事務持久化機制的redolog的產(chǎn)生。默認情況下undo文件是保持在共享表空間的,也即ibdatafile文件中,當數(shù)據(jù)庫中發(fā)生一些大的事務性操作的時候,要生成大量的undo信息,全部保存在共享表空間中的。因此共享表空間可能會變的很大,默認情況下,也就是undo 日志使用共享表空間的時候,被“撐大”的共享表空間是不會也不能自動收縮的。因此,mysql5.7之后的“獨立undo 表空間”的配置就顯得很有必要了。

三、二進制日志(binlog)

作用:用于復制,在主從復制中,從庫利用主庫上的binlog進行重播,實現(xiàn)主從同步。用于數(shù)據(jù)庫的基于時間點的還原。

內(nèi)容:邏輯格式的日志,可以簡單認為就是執(zhí)行過的事務中的sql語句。但又不完全是sql語句這么簡單,而是包括了執(zhí)行的sql語句(增刪改)反向的信息,也就意味著delete對應著delete本身和其反向的insert;update對應著update執(zhí)行前后的版本的信息;insert對應著delete和insert本身的信息。在使用mysqlbinlog解析binlog之后一些都會真相大白。因此可以基于binlog做到類似于oracle的閃回功能,其實都是依賴于binlog中的日志記錄。

什么時候產(chǎn)生:事務提交的時候,一次性將事務中的sql語句(一個事物可能對應多個sql語句)按照一定的格式記錄到binlog中。這里與redo log很明顯的差異就是redo log并不一定是在事務提交的時候刷新到磁盤,redo log是在事務開始之后就開始逐步寫入磁盤。因此對于事務的提交,即便是較大的事務,提交(commit)都是很快的,但是在開啟了bin_log的情況下,對于較大事務的提交,可能會變得比較慢一些。這是因為binlog是在事務提交的時候一次性寫入的造成的,這些可以通過測試驗證。

什么時候釋放:binlog的默認是保持時間由參數(shù)expire_logs_days配置,也就是說對于非活動的日志文件,在生成時間超過expire_logs_days配置的天數(shù)之后,會被自動刪除。

mysql中的7種日志小結(jié)

對應的物理文件:配置文件的路徑為log_bin_basename,binlog日志文件按照指定大小,當日志文件達到指定的最大的大小之后,進行滾動更新,生成新的日志文件。對于每個binlog日志文件,通過一個統(tǒng)一的index文件來組織。

mysql中的7種日志小結(jié)

其他:二進制日志的作用之一是還原數(shù)據(jù)庫的,這與redo log很類似,很多人混淆過,但是兩者有本質(zhì)的不同作用不同:redo log是保證事務的持久性的,是事務層面的,binlog作為還原的功能,是數(shù)據(jù)庫層面的(當然也可以精確到事務層面的),雖然都有還原的意思,但是其保護數(shù)據(jù)的層次是不一樣的。內(nèi)容不同:redo log是物理日志,是數(shù)據(jù)頁面的修改之后的物理記錄,binlog是邏輯日志,可以簡單認為記錄的就是sql語句另外,兩者日志產(chǎn)生的時間,可以釋放的時間,在可釋放的情況下清理機制,都是完全不同的。恢復數(shù)據(jù)時候的效率,基于物理日志的redo log恢復數(shù)據(jù)的效率要高于語句邏輯日志的binlog關于事務提交時,redo log和binlog的寫入順序,為了保證主從復制時候的主從一致(當然也包括使用binlog進行基于時間點還原的情況),是要嚴格一致的,MySQL通過兩階段提交過程來完成事務的一致性的,也即redo log和binlog的一致性的,理論上是先寫redo log,再寫binlog,兩個日志都提交成功(刷入磁盤),事務才算真正的完成。

四、錯誤日志

錯誤日志記錄著mysqld啟動和停止,以及服務器在運行過程中發(fā)生的錯誤的相關信息。在默認情況下,系統(tǒng)記錄錯誤日志的功能是關閉的,錯誤信息被輸出到標準錯誤輸出。指定日志路徑兩種方法:1)編輯my.cnf 寫入 log-error=[path]2)通過命令參數(shù)錯誤日志 mysqld_safe ?user=mysql ?log-error=[path] &

顯示錯誤日志的命令(如下圖所示)

mysql中的7種日志小結(jié)

五、普通查詢?nèi)罩?general query log

記錄了服務器接收到的每一個查詢或是命令,無論這些查詢或是命令是否正確甚至是否包含語法錯誤,general log 都會將其記錄下來 ,記錄的格式為 {Time ,Id ,Command,Argument }。也正因為mysql服務器需要不斷地記錄日志,開啟General log會產(chǎn)生不小的系統(tǒng)開銷。 因此,Mysql默認是把General log關閉的。

查看日志的存放方式:show variables like ‘log_output’;

mysql中的7種日志小結(jié)

如果設置mysql> set global log_output=’table’ 的話,則日志結(jié)果會記錄到名為gengera_log的表中,這表的默認引擎都是CSV如果設置表數(shù)據(jù)到文件set global log_output=file;設置general log的日志文件路徑:set global general_log_file=’/tmp/general.log’;開啟general log: set global general_log=on;關閉general log: set global general_log=off;

mysql中的7種日志小結(jié)

然后在用:show global variables like ‘general_log’

mysql中的7種日志小結(jié)

六、慢查詢?nèi)罩?p>慢日志記錄執(zhí)行時間過長和沒有使用索引的查詢語句,報錯select、update、delete以及insert語句,慢日志只會記錄執(zhí)行成功的語句。

1. 查看慢查詢時間:

show variables like “l(fā)ong_query_time”;默認10s

mysql中的7種日志小結(jié)

2. 查看慢查詢配置情況:

show status like “%slow_queries%”;

mysql中的7種日志小結(jié)

mysql中的7種日志小結(jié)

3. 查看慢查詢?nèi)罩韭窂剑?/p>

show variables like “%slow%”;

mysql中的7種日志小結(jié)

4. 開啟慢日志

mysql中的7種日志小結(jié)

查看已經(jīng)開啟:

mysql中的7種日志小結(jié)

到此這篇關于mysql中的7種日志小結(jié)的文章就介紹到這了,更多相關mysql 日志內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

相關文章:
主站蜘蛛池模板: 厦门ISO认证|厦门ISO9001认证|厦门ISO14001认证|厦门ISO45001认证-艾索咨询专注ISO认证行业 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | 番茄畅听邀请码怎么输入 - Dianw8.com | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 河南正规膏药生产厂家-膏药贴牌-膏药代加工-修康药业集团官网 | 泰国专线_泰国物流专线_广州到泰国物流公司-泰廊曼国际 | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 上海物流公司,上海货运公司,上海物流专线-优骐物流公司 | 全温度恒温培养摇床-大容量-立式-远红外二氧化碳培养箱|南荣百科 | 净化车间_洁净厂房_净化公司_净化厂房_无尘室工程_洁净工程装修|改造|施工-深圳净化公司 | 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | 【孔氏陶粒】建筑回填陶粒-南京/合肥/武汉/郑州/重庆/成都/杭州陶粒厂家 | app开发|app开发公司|小程序开发|物联网开发||北京网站制作|--前潮网络 | 贴片电容-贴片电阻-二三极管-国巨|三星|风华贴片电容代理商-深圳伟哲电子 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 菏泽商标注册_菏泽版权登记_商标申请代理_菏泽商标注册去哪里 | 澳威全屋定制官网|极简衣柜十大品牌|衣柜加盟代理|全屋定制招商 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | C形臂_动态平板DR_动态平板胃肠机生产厂家制造商-普爱医疗 | 等离子空气净化器_医用空气消毒机_空气净化消毒机_中央家用新风系统厂家_利安达官网 | 集装箱展厅-住人集装箱住宿|建筑|房屋|集装箱售楼处-山东锐嘉科技工程有限公司 | 萃取箱-萃取槽-PVC萃取箱厂家-混合澄清槽- 杭州南方化工设备 | 盐水蒸发器,水洗盐设备,冷凝结晶切片机,转鼓切片机,絮凝剂加药系统-无锡瑞司恩机械有限公司 | 篷房|仓储篷房|铝合金篷房|体育篷房|篷房厂家-华烨建筑科技官网 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 | 隆众资讯-首页_大宗商品资讯_价格走势_市场行情| 5nd音乐网|最新流行歌曲|MP3歌曲免费下载|好听的歌|音乐下载 免费听mp3音乐 | 搪瓷反应釜厂家,淄博搪瓷反应釜-淄博卓耀 | 工业铝型材生产厂家_铝合金型材配件批发精加工定制厂商 - 上海岐易铝业 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | 铝合金线槽_铝型材加工_空调挡水板厂家-江阴炜福金属制品有限公司 | 医用酒精_84消毒液_碘伏消毒液等医用消毒液-漓峰消毒官网 | 面粉仓_储酒罐_不锈钢储酒罐厂家-泰安鑫佳机械制造有限公司 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 篷房[仓储-婚庆-展览-活动]生产厂家-江苏正德装配式帐篷有限公司 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 100国际学校招生 - 专业国际学校择校升学规划 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 |