상황) 

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군

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

,

문제16) Copy the file /etc/fstab to /var/tmp/fstab and configure the "ACL" as mention following. The file /var/tmp/fstab is owned by the "root". The file /var/tmp/fstab belongs to the group "testmanager“. The file /var/tmp/fstab should not be executable by other's. The user "max" should able to read and write to the file. The user "dax" can neither read nor write to the file. other users (future and current) should be able to read /var/tmp/fstab.


/etc/fstab 파일을 /var/tmp/fstab 으로 카피하고 ACL 세팅을 하시오.

1. var/tmp/fstab 의 소유는 root 이다.

2. /var/tmp/fstab 은 testmanager 그룹에 소속된다. 

3. /var/tmp/fstab 은 다른 유저는 실행해서는(실행/수정) 안된다.

4. "max" 라는 유저는 fstab 파일을 읽거나 쓸 수 있어야 한다.

5. "dax" 라는 유저는 fstab 파일을 읽거나 쓸 수 없어야 한다.

6. 다른 유저는 fstab 파일을 읽을 수는 있다. 


그야말로 앞선 기출 포스팅에서 "단어" 만 바꾼 다른 문제가 나왔습니다.

1. #cp /etc/fstab /var/tmp/fstab        // 우리는 root 니까 옵션없이 복사하면 root 소유에 root 그룹에 소속된 fstab 파일이 됩니다.

2. #groupadd testmanager         // 그룹이 없으면 만들기

#chown root:testmanager /var/tmp/fstab   or

#chgrp testmanager /var/tmp/fstab                // 그룹을 testmanager 로 변경.

#ll

-rw-r--r-- 1 root testmanager 501 May 13 00:05 fstab

#getfacl fstab                // 현재 fstab 의 ACL 보기

# file: fstab

# owner: root

# group: testmanager

user::rw-

group::r--

other::r--


3. 이미 그렇게 되어 있어서 굳이 수정할 필요가 없음.

456. max user 에게 rw 권한 부여

dax user 에게 모든 권한 불허.

      다른 유저는 읽기만 가능.

# setfacl -m user:max:rw fstab   ( = u:root:rw )         // max user 에게 rw. 

# setfacl -m:dax:--- fstab            // dax user 에게 아무 권한 주지 않음

# getfacl fstab                // 권한 확인하기

# file: fstab

# owner: root

# group: testmanager

user::rw-                // 이건 일반유저가 아니라 소유자

user:max:rw-            // 일반유저 max 의 권한

user:dax:---            // 일반유저 dax 의 권한

group::r--               

mask::rw-        

other::r--            // 다른 일반유저는 읽기만 가능.


 




블로그 이미지

늙은M군

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

,