![tmpdir의 크기 제한](https://rvso.com/image/1417411/tmpdir%EC%9D%98%20%ED%81%AC%EA%B8%B0%20%EC%A0%9C%ED%95%9C.png)
사용 가능한 모든 디스크 공간을 "먹지" 않도록 MySQL tmpdir의 디스크 사용량을 제한해야 합니다. 약 30G를 사용할 수 있지만 mysqld가 임시 테이블을 생성하기 위해 이 모든 것을 사용하는 것을 보았습니다.
첫 번째 접근 방식은 디스크 할당량을 구현하는 것이었지만 디스크를 사용하는 동안 할당량을 설정하는 방법을 모르기 때문에 문제가 발생했습니다. 아마도 부팅 시 init 스크립트에서 수행될 수 있지만 이것이 좋은 생각인지는 모르겠습니다.
어떤 제안이 있으십니까? 이 상황에서 모범 사례는 무엇입니까?
OS는 레드햇이다
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)을 강제로 설정하는 것은 너무 위험하다는 결론을 내렸습니다. 이 문제는 제가 이 인프라를 관리하고 있는 이후로 한 번만 발생했으며 이것이 거대한 임시 테이블을 생성하는 서버의 의심스러운 쿼리와 관련이 있는 것으로 의심됩니다.
제안해 주셔서 감사합니다.