묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
mysql DB 테이블이 깨졌을 경우에 어떻게 복구할까요?
2009.02.21 12:27
XE 버전은 1.0.0인데, 정확히는 XE 질문이 아니고 mysql 질문입니다
다른 부서에서 아카이빙 용도로 쓸 서브도메인이 필요해서 전임자가 xe 1.0.0을 깔아줘서서 쓰고 있었는데 언제부턴가 안 열리기 시작했답니다(전임자는 퇴사한지 좀 됐음).
몇가지 조사를 하다가 mysqlcheck 돌려보니까 corrupt 되었다고 나오더군요.
다른 database도 몇몇 테이블이 corrupt된게 있긴 했는데, mysqlcheck -r 옵션으로 repair하니까 일부 손실된게 있을지는 몰라도 database에 접근은 되는데, 정작 중요한 zbxe의 documents 테이블이 해결이 안되네요
mysqlcheck -r historywork -uroot -ppassword
이렇게 실행해서 관련 메시지 부분만 뽑아내면 다음과 같습니다
historywork.xe_documents
info : Found link that points at 10480272 (outside data file) at 10468168
info : Found block that points outside data file at 10469276
error : Not enough memory for blob at 10478136 (need 183277732)
info : Found link that points at 10480272 (outside data file) at 10468168
info : Found block that points outside data file at 10469276
error : Not enough memory for blob at 10478136 (need 183277732)
status : Operation failed
(need 183277732) 이 부분이 메모리가 180메가 정도가 필요하다는건가요?
저 메모리 할당은 어디서 해야할지 정확히 모르겠어서 my.cnf에서
# The maximum size of a query packet the server can handle as well as
# maximum query size server can process (Important when working with
# large BLOBs). enlarged dynamically, for each connection.
max_allowed_packet = 16M
이 부분을 256M으로 바꾸고, /etc/init.d/mysql restart 해보았는데 마찬가지네요.
repair가 정상적으로 작동할 수 있게 하기 위해서는 어디에서 메모리 할당량을 늘려야할까요?
다른 부서에서 아카이빙 용도로 쓸 서브도메인이 필요해서 전임자가 xe 1.0.0을 깔아줘서서 쓰고 있었는데 언제부턴가 안 열리기 시작했답니다(전임자는 퇴사한지 좀 됐음).
몇가지 조사를 하다가 mysqlcheck 돌려보니까 corrupt 되었다고 나오더군요.
다른 database도 몇몇 테이블이 corrupt된게 있긴 했는데, mysqlcheck -r 옵션으로 repair하니까 일부 손실된게 있을지는 몰라도 database에 접근은 되는데, 정작 중요한 zbxe의 documents 테이블이 해결이 안되네요
mysqlcheck -r historywork -uroot -ppassword
이렇게 실행해서 관련 메시지 부분만 뽑아내면 다음과 같습니다
historywork.xe_documents
info : Found link that points at 10480272 (outside data file) at 10468168
info : Found block that points outside data file at 10469276
error : Not enough memory for blob at 10478136 (need 183277732)
info : Found link that points at 10480272 (outside data file) at 10468168
info : Found block that points outside data file at 10469276
error : Not enough memory for blob at 10478136 (need 183277732)
status : Operation failed
(need 183277732) 이 부분이 메모리가 180메가 정도가 필요하다는건가요?
저 메모리 할당은 어디서 해야할지 정확히 모르겠어서 my.cnf에서
# The maximum size of a query packet the server can handle as well as
# maximum query size server can process (Important when working with
# large BLOBs). enlarged dynamically, for each connection.
max_allowed_packet = 16M
이 부분을 256M으로 바꾸고, /etc/init.d/mysql restart 해보았는데 마찬가지네요.
repair가 정상적으로 작동할 수 있게 하기 위해서는 어디에서 메모리 할당량을 늘려야할까요?