### 특정 데이터베이스의 조건에 맞는 데이터만 백업하기
### 특정 데이터베이스의 조건에 맞는 데이터만 백업하기
이번예에는 특정 데이터베이스 내에 실제 데이터들 가운데 특정조건에 맞는 데이터만을 백업하는 방법을 소개한다. 즉, 특정 데이터베이스 전체를 대상으로 한 것도 아니고 특정 데이터베이스의 테이블 전체를 대상으로하는 백업도 아닌 특정 테이블의 데이터(레코드값)들 가운데 조건에 해당하는 데이터(레코드값)만을 골라서 백업하는 방법을 의미한다.
이와같은 백업을 하려면 --where옵션을 사용하여 조건문을 지정해 주면 된다. 사용하는 형식은 다음과 같다.
사용형식 : ./mysqldump -u root -p -where="WHERE조건문" DB명 테이블명> 파일명
/usr/local/mysql/bin [root@file bin]# Enter password: ******** [root@file bin]# [root@file bin]# ls -l temp_db2.sql -rw-r--r-- 1 root root 14929 2월 14 12:25 temp_db2.sql [root@file bin]# 위와 같이 백업된 temp_db2.sql파일의 내용을 보면 다음과 같다. 즉, 아래의 결과를 보면 데이터베이스 스키마와 --where조건에 맞는 데이터만이 저장되어 있다는 것을 알 수 있다.
-- MySQL dump 9.08 -- -- Host: localhost Database: temp_db2 --------------------------------------------------------- -- Server version 4.0.14 -- -- Table structure for table 'Demo_DomainAdmin' -- CREATE TABLE Demo_DomainAdmin ( admin_id varchar(12) NOT NULL default '', admin_pass varchar(40) default NULL,
PRIMARY KEY (admin_id) ) TYPE=MyISAM; -- -- Dumping data for table 'Demo_DomainAdmin' -- -- WHERE: admin_id='admin' INSERT INTO Demo_DomainAdmin VALUES ('admin','6fffffffffffff996d4',); [root@file bin]#
[root@file bin]# pwd
[root@file bin]# ./mysqldump -u root -p --where="admin_id='admin'" temp_db2 Demo_DomainAdmin > ./temp_db2.sql
[root@file bin]# cat temp_db2.sql
이제 실무적인 관점에서 한가지만 더 알려드리겠다. 위의 방법에서 -t옵션을 추가하여 백업하면 데이터베이스 스키마를 제외한 실질적으로 --where조건에 맞는 순수한 데이터만을 저장할 수 있다.
아래의 예는 바로 앞의 mysqldump명령어에 -t옵션만을 추가한 것이다. 즉 위의 결과에서 생성된 데이터베이스 스키마를 제외한 순수한 --where조건에 맞는 데이터만을 저장하기 위한 백업이다.
[root@file bin]# pwd
/usr/local/mysql/bin [root@file bin]# Enter password: ******** [root@file bin]# |
아래는 그 결과를 나타낸것이다. 확인해 보면 알겠지만 앞의 결과에서 데이터베이스 스키마를 생성하는 "CREATE TABLE"문이 생략되고 순수한 --where조건에 맞는 결과만이 저장되었다는 것을 확인 할 수 있다.
[root@file bin]# cat temp_db2.sql
-- MySQL dump 9.08 -- -- Host: localhost Database: temp_db2 --------------------------------------------------------- -- Server version 4.0.14 -- -- Dumping data for table 'Demo_DomainAdmin' -- -- WHERE: admin_id='admin' INSERT INTO Demo_DomainAdmin VALUES ('admin','6fffffffffffff996d4',); [root@file bin]# |
실제로 이와 같은 백업방법은 좀 까다로와 보이긴 하지만 잘 활용하면 실무에서 매우 강력한 힘을 발휘한다. 즉, 수많은 데이터들이 저장되어 있는 특정 테이블의 값들 가운데 특정 조건에 맞는 데이터만을 뽑아내려고 할 때에 가장 현실적이고 현명한 방법이기 때문이다.
#####################################################################
"리눅스포털 - 슈퍼유저코리아" 사이트를 참고로 다시 작성했습니다.
#####################################################################
[출처] http://blog.naver.com/yswon72