您好,登錄后才能下訂單哦!
一、描述
故事的過程是這個樣子的,MySQL 數(shù)據(jù)庫有一張40多G的大表,開發(fā)人員執(zhí)行了一個單表查詢,結(jié)果我就收到了一個磁盤空間滿的告警。一下子就不淡定了,誰在搞事情,腦海里各種可能行想了一遍,想到的最多的就是ibtmp1爆了,第一時間線上看一下,查到了最大的那個文件,結(jié)果和想的一樣。這里我們要看SQL是怎么寫的,表結(jié)構(gòu)是什么樣子,然后和官網(wǎng)對比,MySQL在查詢的時候有很多可能會使用磁盤臨時表,包括表連接、排序、大字段等等。
二、解決方法
臨時解決方法:
1、臨時擴(kuò)一下硬盤
2、直接重啟
終結(jié)解決方案
操作步驟:
1、檢查數(shù)據(jù)庫狀態(tài)
ps -ef|grep mysql
2、檢查主備庫狀態(tài)
show slave status \G;
3、檢查數(shù)據(jù)庫關(guān)閉參數(shù),要求為1
show variables like 'innodb_fast_shutdown';
4、關(guān)閉同步進(jìn)程
stop slave;
5、關(guān)閉數(shù)據(jù)庫
shutdown;
6、設(shè)置數(shù)據(jù)庫臨時表空間參數(shù)
#/etc/my.cnf
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:10G
7、啟動數(shù)據(jù)庫服務(wù)、同步線程
mysqld_safe --defaults-file=/etc/my.cnf &
start slave;
show slave status\G;
8、檢查數(shù)據(jù)庫臨時表空間參數(shù)
show variables like 'innodb_temp_data_file_path';
9、查看ibtmp1文件大小
du -sh ibtmp1
三、小潔
1、永遠(yuǎn)不要小視一條select xxx from tab;如果你不知道你在干嘛,不知道其中的風(fēng)險,不要在生產(chǎn)系統(tǒng)敲任何一個指令。
2、要有敬畏之心。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。