突然收到zabbix告警,說mysql服務(wù)器的/目錄磁盤空間不足。
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),東臺企業(yè)網(wǎng)站建設(shè),東臺品牌網(wǎng)站建設(shè),網(wǎng)站定制,東臺網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,東臺網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。登錄到服務(wù)器,看了下發(fā)現(xiàn)100GB的根目錄,居然使用了差不多90GB。這臺服務(wù)器上只跑了一個MySQL,應(yīng)該不是日志未清理等其它原因造成的。
(說明:下面的幾張截圖是后期截的,當(dāng)時已經(jīng)有部分SQL跑完,釋放掉部分磁盤空間了)
lsof |grep deleted 發(fā)現(xiàn)如下:
可以看到這個臨時文件差不多有40GB。
show processlist; 如下:
上圖看的話,沒有涉及到寫binlog的操作,但是由于單純的select并不會造成/tmp目錄爆滿的情況,所以猜測他這個同一個事務(wù)里面之前還有涉及到寫binlog的操作(update、delete等)。
官方的說明:
https://dev.mysql.com/doc/refman/5.6/en/binary-log.html
When a thread that handles the transaction starts, it allocates a buffer of binlog_cache_size
to buffer statements. If a statement is bigger than this, the thread opens a temporary file to store the transaction. The temporary file is deleted when the thread ends.
The Binlog_cache_use
status variable shows the number of transactions that used this buffer (and possibly a temporary file) for storing statements. TheBinlog_cache_disk_use
status variable shows how many of those transactions actually had to use a temporary file. These two variables can be used for tuning binlog_cache_size
to a large enough value that avoids the use of temporary files.
The max_binlog_cache_size
system variable (default 4GB, which is also the maximum) can be used to restrict the total size used to cache a multiple-statement transaction. If a transaction is larger than this many bytes, it fails and rolls back. The minimum value is 4096.
If you are using the binary log and row based logging, concurrent inserts are converted to normal inserts for CREATE ... SELECT
or INSERT ... SELECT
statements. This is done to ensure that you can re-create an exact copy of your tables by applying the log during a backup operation. If you are using statement-based logging, the original statement is written to the log.
當(dāng)事務(wù)開始時,它將緩沖區(qū)語句分配一個binlog_cache_size大小的緩沖區(qū)(我這里設(shè)置的是16777216bytes,即16MB)。 如果一個語句大于此,線程將打開一個臨時文件來存儲事務(wù)(默認是存放在/tmp/目錄下)。 當(dāng)線程結(jié)束時,臨時文件會自動被刪除。
上面就是因為事務(wù)里面的臨時文件超過16MB了,被放到/tmp目錄下了,但是這個臨時文件實在太大了,導(dǎo)致磁盤空間不足告警了。
解決方法:
等上面的查詢結(jié)束后,我們先關(guān)閉mysqld。(條件能允許的話,當(dāng)然是讓查詢自己結(jié)束。如果直接kill掉的話,估計回滾也要話挺長時間的)
然后調(diào)整mysql的tmpdir到其他更大的磁盤去。
mkdir /bdata/mysql_tmp
chown mysql.mysql /bdata/mysql_tmp -R
chown 1777 -R /bdata/mysql_tmp -R
vim /etc/my.cnf
[mysqld]
tmpdir = /bdata/mysql_tmp
然后啟動mysql即可
再次執(zhí)行l(wèi)sof|grep deleted 可以看到臨時文件的路徑已經(jīng)改到了/bdata/mysql_tmp目錄下了。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
標(biāo)題名稱:一個mysql/tmp目錄爆滿問題的處理-創(chuàng)新互聯(lián)
分享路徑:http://www.rwnh.cn/article36/cejhsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、域名注冊、微信小程序、商城網(wǎng)站、營銷型網(wǎng)站建設(shè)、手機網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容