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