상황)
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 |