背景
MySQL在26日 16:23:49產(chǎn)生了大量的慢查詢,在這段時(shí)間內(nèi),binlog文件刷新的很快(查看慢日志是mysql DML并發(fā)比較多),想知道寫完一個(gè)binlog文件究竟花了幾分鐘時(shí)間?

分析
•三個(gè)binlog文件的最后修改間隔時(shí)間分別是2 分鐘和1 分鐘
•同一個(gè)事務(wù)只能寫同一個(gè)binlog文件
•mysql-bin.016126文件的最后修改時(shí)間16:22不一定是mysql-bin.016127 文件創(chuàng)建的時(shí)間(存在大事務(wù)的情況下,大事務(wù)還在寫上一個(gè)binlog文件,新的事務(wù)已經(jīng)在寫新創(chuàng)建的binlog文件了)
•使用mysqlbinlog 可以讀取binlog文件中的event,知道文件的創(chuàng)建時(shí)間
•在Linux下,是否有命令可以查出文件的創(chuàng)建時(shí)間了?
方法
1、使用stat命令
stat mysql-bin.016126
File: ‘mysql-bin.016126'
Size: 262146609 Blocks: 512016 IO Block: 4096 regular file
Device: fd02h/64770d Inode: 135529302 Links: 1
Access: (0640/-rw-r-----) Uid: ( 5701/actiontech-mysql) Gid: ( 5701/actiontech-mysql)
Access: 2019-04-28 14:41:42.967043003 +0800
Modify: 2019-04-26 16:24:21.823932020 +0800
Change: 2019-04-26 16:24:21.823932020 +0800
1、訪問(wèn)時(shí)間,讀一次這個(gè)文件的內(nèi)容,這個(gè)時(shí)間就會(huì)更新。比如對(duì)這個(gè)文件運(yùn)用 more、cat等命令。ls、stat命令都不會(huì)修改文件的訪問(wèn)時(shí)間
2、修改時(shí)間,修改時(shí)間是文件內(nèi)容最后一次被修改時(shí)間。比如:vi后保存文件。ls -l列出的時(shí)間就是這個(gè)時(shí)間
3、狀態(tài)改動(dòng)時(shí)間。是該文件的i節(jié)點(diǎn)最后一次被修改的時(shí)間,通過(guò)chmod、chown命令修改一次文件屬性,這個(gè)時(shí)間就會(huì)更新
如果文件創(chuàng)建后就沒(méi)有修改過(guò),修改時(shí)間=創(chuàng)建時(shí)間;如果文件創(chuàng)建后,狀態(tài)就沒(méi)有改變過(guò),那么狀態(tài)改變時(shí)間=創(chuàng)建時(shí)間;如果文件創(chuàng)建后,沒(méi)有被讀取過(guò),那么訪問(wèn)時(shí)間=創(chuàng)建時(shí)間。對(duì)使用過(guò)的文件,這些基本不太可能
--------------------------------------------------------------------------------
2、使用debugfs
獲取binlog文件存放根文件目錄
grep 'datas' /etc/fstab
/dev/mapper/centos-datas /datas ext4 defaults 1 2
得到binlog文件inode號(hào)
ls -i mysql-bin.016127
135529232 mysql-bin.016127
得到文件創(chuàng)建時(shí)間
debugfs -R 'stat <135529232>' /dev/mapper/centos-datas
debugfs 1.42.9 (28-Dec-2013)
Inode: 135529232 Type: regular Mode: 0640 Flags: 0x80000
Generation: 2396969921 Version: 0x00000000:00000001
User: 5701 Group: 5701 Size: 262147164
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 512016
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5cc2c082:47dcd9bc -- Fri Apr 26 16:25:38 2019
atime: 0x5cc55c49:2929fd18 -- Sun Apr 28 15:54:49 2019
mtime: 0x5cc2c082:47dcd9bc -- Fri Apr 26 16:25:38 2019
crtime: 0x5cc2c035:c470d1d0 -- Fri Apr 26 16:24:21 2019
Size of extra inode fields: 28
EXTENTS:
•crtime即為文件創(chuàng)建時(shí)間
•crtime和mtime文件最后修改時(shí)間差1分17秒
•MySQL寫完一個(gè)binlog文件用時(shí)1分多鐘
注意
xfs文件系統(tǒng)不支持用debugfs來(lái)查看文件的創(chuàng)建時(shí)間
grep root /etc/fstab
/dev/mapper/centos-root / xfs defaults 1 1
ls -i /test1
357556 /test1
debugfs -R 'stat <357556>' /dev/mapper/centos-root
debugfs 1.42.9 (28-Dec-2013)
/dev/mapper/centos-root: Bad magic number in super-block while opening filesystem
stat: Filesystem not open
總結(jié)
以上所述是小編給大家介紹的Linux下查看binlog文件創(chuàng)建時(shí)間的命令,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!