Loading...
MySQL 9.5 Reference Manual 9.5의 9.6.5 Setting Up a MyISAM Table Maintenance Schedule의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
문제가 발생하기를 기다리는 대신, 정기적으로 테이블 체크를 수행하는 것이 좋습니다. MyISAM 테이블을 체크하고 복구하는 한 가지 방법은 CHECK TABLE 및 REPAIR TABLE 스테이트먼트를 사용하는 것입니다. Section 15.7.3, “Table Maintenance Statements”를 참조하십시오.
테이블을 체크하는 또 다른 방법은 myisamchk를 사용하는 것입니다. 유지 관리 목적이라면 myisamchk -s를 사용할 수 있습니다. -s 옵션은 (--silent의 축약형으로) myisamchk를 침묵 모드로 실행하여 오류가 발생했을 때만 메시지를 출력하게 합니다.
자동 MyISAM 테이블 체크를 활성화해 두는 것도 좋은 생각입니다. 예를 들어, 머신이 업데이트 도중에 재시작된 경우, 보통은 그 이후에 사용되기 전에 영향을 받았을 수 있는 각 테이블을 체크해야 합니다. (이것들을 “예상된 크래시 상태의 테이블(expected crashed tables)”이라고 합니다.)
서버가 MyISAM 테이블을 자동으로 체크하도록 하려면, myisam_recover_options 시스템 변수를 설정하여 서버를 시작하십시오. Section 7.1.8, “Server System Variables”를 참조하십시오.
또한 정상적인 시스템 운영 중에도 정기적으로 테이블을 체크해야 합니다. 예를 들어, crontab 파일에 다음과 같은 한 줄을 추가하여 중요한 테이블을 주 1회 체크하는 cron 잡을 실행할 수 있습니다:
135 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI
이는 크래시된 테이블에 대한 정보를 출력하므로, 필요에 따라 이를 검사하고 복구할 수 있습니다.
우선, 지난 24시간 동안 업데이트된 모든 테이블에 대해서 매일 밤 myisamchk -s를 실행하십시오. 문제 발생 빈도가 낮다는 것을 확인하면, 체크 주기를 주 1회 정도로 줄일 수 있습니다.
일반적으로 MySQL 테이블은 유지 관리가 거의 필요 없습니다. 그러나 가변 길이 행(테이블에 VARCHAR, BLOB, TEXT 컬럼이 있는 테이블)을 가진 MyISAM 테이블에 대해 많은 업데이트를 수행하고 있거나, 삭제된 행이 많은 테이블이 있다면, 가끔씩 테이블을 조각 모음/공간 회수를 하고 싶을 수 있습니다.
해당 테이블에 OPTIMIZE TABLE을 사용하여 이를 수행할 수 있습니다. 또는, 잠시 동안 mysqld 서버를 중지할 수 있다면, 데이터 디렉터리로 이동하여 서버가 중지된 상태에서 다음 커맨드를 사용할 수 있습니다:
1$> myisamchk -r -s --sort-index --myisam_sort_buffer_size=16M */*.MYI
9.6.4 MyISAM Table Optimization
10 Optimization