限制 tmpdir 的大小

限制 tmpdir 的大小

我需要限制 MySQL tmpdir 的磁碟使用量,這樣它就不會「吃掉」所有可用磁碟空間。大約有 30G 可用,但我看到 mysqld 使用所有這些來建立臨時表。

我的第一個方法是實現磁碟配額,但我遇到了問題,因為我不知道如何在磁碟使用時設定配額。它可能可以在啟動時在 init 腳本中完成,但我不知道這是否是一個好主意。

有什麼建議麼?在這種情況下,最佳實踐是什麼?

作業系統是RedHat

uname -a    
Linux www.myservername.com 2.6.18-194.17.1.el5 #1 SMP Mon Sep 20 07:12:06 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux


mysql --version
mysql  Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (x86_64) using readline 5.1

答案1

你確定嗎? AFAIK 只要查詢需要,臨時表就存在,但之後它們就會消失。如果您有很多需要 30GB 臨時表的活動查詢,這會給您帶來比使用所有可用空間更多的麻煩(我的意思是磁碟 IO 等)

您仍然可以使用 ulimit,但這至少需要重新啟動服務,所以我不確定這是否比設定配額更好。

答案2

如果您有 LVM,請建立所需大小的單獨分割區掛載。您可以使用 mysqld 的 --tmpdir 選項。

檢查一下。http://dev.mysql.com/doc/refman/5.0/en/temporary-files.html

答案3

在虛擬機器中進行多次嘗試後,我認為對於生產環境而言,強制啟用配額 (-m) 的風險太大。這個問題只發生過一次,因為我正在處理這個基礎設施,並懷疑它一定與伺服器中創建一個巨大的臨時表的狡猾查詢有關。

感謝大家的建議。

相關內容