[TOC]
文件
錯(cuò)誤日志
錯(cuò)誤日志文件對(duì)mysql的啟動(dòng)運(yùn)行關(guān)閉過(guò)程進(jìn)行了記錄
SHOW VARIABLES LIKE 'log_error'
慢查詢?nèi)罩?/h2>
默認(rèn)不開啟,需要手動(dòng)設(shè)置log_slow_queries設(shè)置為true
select * from mysql.slow_log;
查詢?nèi)罩?/h2>
記錄了所有對(duì)mysql數(shù)據(jù)庫(kù)請(qǐng)求的信息,無(wú)論是否得到正確的執(zhí)行
二進(jìn)制文件 binlog
記錄了對(duì)mysql數(shù)據(jù)庫(kù)執(zhí)行更改的所有操作,然后操作本身沒有對(duì)數(shù)據(jù)庫(kù)發(fā)生變化,也可能進(jìn)入二進(jìn)制文件
二進(jìn)制文件主要有以下幾種作用
- 恢復(fù): 某些數(shù)據(jù)的恢復(fù)需要二進(jìn)制日志,
- 復(fù)制: 通過(guò)復(fù)制和執(zhí)行二進(jìn)制日志
- 審計(jì): 通過(guò)二進(jìn)制日志中的信息來(lái)進(jìn)行審計(jì)
參數(shù)
- max_binlog_size 指定了單個(gè)二進(jìn)制文件的最大值,如果超過(guò)該值則產(chǎn)生新的二進(jìn)制日志文件
- binlog_cache_size 所有未提交的二進(jìn)制文件會(huì)記錄到一個(gè)緩存中,等該事務(wù)提交,直接將緩存寫入到二進(jìn)制日志文件
- sync_binlog 二進(jìn)制日志并不是每次寫的時(shí)候都寫入到磁盤,可以設(shè)置次數(shù)
- binlog-do-db 和binlog-ingore-db 表示需要或忽略寫入那些庫(kù)的日志
- log-slave-update slave是否寫binlog
- binlog_format
- statement格式: sql語(yǔ)句
- row: 解決在readcommited情況下主從不一致,但是文件大小會(huì)增加,但在repeatedread由于next-key lock解決了該問(wèn)題
- mixed
innoDB存儲(chǔ)引擎文件
表空間文件
innodb采用將存儲(chǔ)的數(shù)據(jù)按照表空間進(jìn)行存放的設(shè)計(jì),在默認(rèn)配置下會(huì)有一個(gè)初始大小為10mb,名為ibdata1的文件,該文件就是默認(rèn)的表空間文件,用戶可以通過(guò)參數(shù)innodb_data_file_path對(duì)其進(jìn)行設(shè)置
innodb_file_per_table 每個(gè)表產(chǎn)生獨(dú)立的.ibd文件

重做日志文件
在默認(rèn)情況下,innodb的數(shù)據(jù)目錄下會(huì)有兩個(gè)名為ib_logfile0和ib_logfile1的文件,這個(gè)就是重做日志文件,可以使用重做日志恢復(fù)到宕機(jī)前的數(shù)據(jù),保護(hù)數(shù)據(jù)完整性
每個(gè)innodb至少有一個(gè)重做日志組,且每個(gè)組內(nèi)至少有兩個(gè)重做日志文件,我們可以創(chuàng)建多個(gè)重做日志組到不同磁盤,提高重做日志的高可用性,并且在組內(nèi)寫完一個(gè)重做日志文件后再寫另一個(gè)重做日志文件

參數(shù)介紹
- innodb_log_file_size 指定每個(gè)重做日志文件的大小
- innodb_log_files_in_group 重做日志文件組中文件個(gè)數(shù)
- innodb_mirrored_log_groups 重做日志文件組個(gè)數(shù)
- innodb_log_group_home_dir 重做日志文件目錄
重做日志寫入過(guò)程

重做日志文件的寫入不是直接寫,而是先寫到重做日志緩沖,然后按照一定條件寫入日志文件,并且由于在磁盤寫入時(shí)是按照扇區(qū)為單位進(jìn)行寫入,因此寫入必定成功,不用進(jìn)行doublewrite
redo log和binlog區(qū)別
- 二進(jìn)制文件包括inndo,myisam,heap等其他存儲(chǔ)引擎日志,而redolog只是innodb本身的事務(wù)日志
- 記錄的內(nèi)容不同: binlog記錄一個(gè)事務(wù)的具體操作內(nèi)容,而重做日志記錄每個(gè)頁(yè)更改的物理情況
- 寫入時(shí)間不同: binlog只在日志提交時(shí)記錄,redolog在事務(wù)進(jìn)行中也會(huì)寫入