상황) 

1. 고객의 Mysql DB 저장 위치가 /usr/local/var/mysql/var/123

2. 고객의 /usr 파티션 용량이 98% 상황.

3. 고객은 서버관리를 모르고, 해당 사이트 DB 는 스펨으로 가득찬 상황

4. Mysql 5.1.73 / Database Name : 123


1. 고객이 해당 Database 정리를 위해 SQL Dump 파일을 요청.

=> mysqldump -u root -p qwe > /home/123/123-20190513.sql

Enter password:

mysqldump: Got error: 1016: 화일을 열지 못했습니다: 'g4_write_qna.MYD'. (에러번호: 144) when using LOCK TABLES

==> 해당 Table Lock 걸려있어서, --lock-all-tables 옵션 추가


[root@localhost backup]# mysqldump -u root -p --lock-all-tables 123 > /home/123/123-20190513.sql

mysqldump: Couldn't execute 'show create table `g4_write_qna`': 화일을 열지 못했습니다 : 'g4_write_qna.MYD'. (에러번호: 144) (1016)

#show table status;

#repair table g4_write_qna; 


==> g4_write_qna 테이블이 오랜 미관리로 인해 손상되어 있어 repair 및 Dump 불가

해당 테이블의 용량만 2.2G 로 고객사는 미사용 게시판이라고 하니.. 트래시 데이터로 추측됌.

========================

2.2G       ./g4_write_qna.MYD

4.0K    ./g4_write_qna.MYI

16K     ./g4_write_qna.frm

========================


2. 해당 DB 파일 경로 확인 시, 2018년 9월까지만 수정이력이 있어 미사용 테이블로 판단.  ( MYISAM 일 경우 DB 디렉토리 통째로 복사가 가능 ) 

==> 고객에게 해당 Table 용량 확보 승인 요청


3. trancate 로 해당 table clear.  

삭제하기전 DB 디렉토리 통백업 필수 

#tar cvzf 123.tar.gz /usr/local/mysql/var/123

#mysql -u root -p

#use 123

#show tables;

#trancate table g4_write_qna

========================

0       ./g4_write_qna.MYD

4.0K    ./g4_write_qna.MYI

16K     ./g4_write_qna.frm

========================


4. /usr  70% 으로 용량 확보 완료했다.


기타) delete 대신 truncate ?

delete 는 where 조건절로 특정 부분 삭제가 가능. ( 순차 삭제 )  

truncate 는 그냥 테이블을 날려버린다. (drop이지만 테이블의 스키마 뼈대를 남김)

속도는 당연히 truncate 가 더 빠르다. 

테이블 손상된 경우에도 truncate 는 그냥 진행이 가능하다. 

빈 테이블로 깨끗하게 해줌.


상황에 맞춰서 사용하자. 


'Linux ( Cent OS ) > MySQL' 카테고리의 다른 글

CentOS MySQL Yum Repository  (0) 2019.06.19
0. Log Parameters 간단 요약( Mysql 5.1 ) - 작성중  (0) 2019.05.02
7. Binary Log 삭제  (0) 2019.05.02
블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,