2009-02-23 4 views
14

MySQL이 실행되는 동안 MySQL의 느린 쿼리 로그를 자르는 가장 안전한 방법은 무엇입니까? 안전으로MySQL에서 느린 쿼리 로그 잘림

말 :

  • 에 관계없이 파일을 자르려면
  • 가 추가

답변

20

에 원래 크기 다음에 다시 이동하지 않아야 어떤 권한 문제가 발생하지 않아야 실행중인 응용 프로그램에서 열려있는 경우 :

> /var/logs/your.log 

쉘 프롬프트에서 수행하십시오.

+0

필자는 철저히 조사하지는 않았지만이 접근 방식은 로그 항목 중간에서 잘릴 수 있으므로 로그 파일에 오류가 발생합니까? 나는이 솔루션을 좋아한다. (특히 일반적인 리눅스 지식에 추가하는 것이 좋다.) 그러나 내가 볼 수있는 것에서는 @ tjanofsky의 솔루션이 더 강력하다. – rinogo

+0

@rinogo : 좋은 질문입니다. 단일'write()'시스템 콜이 다른 시스템과 인터리브 될 수 있는지 확인해야 할 것이다. OTOH, 나는 로거가 하나의'write()'를 사용하여 로그 할 줄을 작성하는 것을 기대하지 않을 것이다. – vartec

+0

그건 사실이야! 그러나, MySQL의 느린 쿼리 로그의 경우 각 "항목"이 실제로 여러 줄임을 명심해야한다. 따라서 최악의 시나리오에서는 각 "항목"이 실제로 여러 개의 write() 호출로 구성 될 수 있습니다.이 호출은이 문제에 훨씬 취약한 시나리오를 나타냅니다. – rinogo

5

이 문제가 계속 될 경우 logrotate을 살펴 봐야합니다.

나는 이해할 지 모르지만 나는 echo > file.log에 대해 몰랐다. 나는 항상 cat /dev/null > file.log을 사용했습니다.

매우 중요한 것은 기록 된 로그 파일을 삭제하지 않는 것이므로 열려있는 프로그램이 계속 파일에 쓸 수 있기 때문입니다. 모든 하드 드라이브 공간이 사라진 이유를 알아내는 것은 매우 어렵습니다! here에서

+0

Linux의 경우이 방법이 가장 쉽고 간편합니다. – shgnInc

16

는 :

새 로그를 열 것입니다 로그를 플러시 mysqld를 얘기 한 후, 열린 파일을 이동할 수 있습니다.

shell> cd mysql-data-directory 
shell> mv mysql.log mysql.old 
shell> mv mysql-slow.log mysql-slow.old 
shell> mysqladmin flush-logs