mysqldump로 백업시에 create database문을 생략하여 백업하기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,185 조회
- 0 추천
- 목록
본문
mysqldump로 백업시에 create database문을 생략하여 백업하기
MYSQL의 백업유틸리티인 mysqldump명령어로 백업을 할 때에 앞의 설명에서 보았듯이 “--databases”옵션을 사용하여 여러 개의 데이터베이스를 동시에 백업하거나 또는 “--all-databases”라는 옵션을 사용하여 모든 테이터베이스를 모두 백업할 때에는 백업파일에 “CREATE DATABASE”라는 SQL문이 추가로 저장되게 됩니다.
즉, 백업된 파일로 복구를 할 때에 데이터베이스까지 생성하면서 복구하기 위한 것이였습니다.
이때 “--databases”옵션이나 “--all-databases”옵션을 사용하여 백업할 때에 “CREATE DATABASE”라는SQL문이 추가되지 않도록 하는 방법이 있습니다.
즉 mysqldump명령어로 백업을 할 때에 -n옵션 또는 --no-create-db라는 옵션을 사용하시면 “--databases”옵션이나 “--all-databases”옵션을 사용하여 백업할 때에도 백업파일에 “CREATE DATABASE”라는SQL문이 추가되지 않습니다.
사용하는 형식은 다음과 같습니다.
사용형식 : mysqldump -u DB사용자명 -p -n [옵션] DB명 > 파일명
위의 형식에서 -n옵션 대신에 --no-create-db를 사용해도 동일한 결과를 얻을 수 있습니다.
아래는 “--databases”옵션을 사용하여 MYSQL데이터베이스의 temp_db2라는 데이터베이스와 papa라는 데이터베이스를 동시에 백업하여 temp_db8.sql에 저장하는 예입니다.
이때 -n옵션을 사용하여 백업결과로 생성되는 temp_db8.sql파일에 “CREATE DATABASE”라는SQL문이 추가되지 않도록 하였습니다.
[root@file bin]# pwd
/usr/local/mysql/bin [root@file bin]# [root@file bin]# ./mysqldump -u root -p -n --databases temp_db2 papa > temp_db8.sql
Enter password: ******** [root@file bin]# [root@file bin]# ls -l temp_db8.sql -rw-r--r-- 1 root root 11768 2월 14 16:24 temp_db8.sql [root@file bin]# |
그 결과 temp_db8.sql파일을 보시면 다음과 같습니다.
즉 “--databases”옵션을 사용하여 두개이상의 데이터베이스를 동시에 백업하였지만 백업결과 파일 temp_db8.sql에는 “CREATE DATABASE”라는SQL문이 추가되지 않았습니다.
[root@file bin]# cat temp_db8.sql
-- MySQL dump 9.08 -- -- Host: localhost Database: temp_db2 --------------------------------------------------------- -- Server version 4.0.14
-- -- Current Database: temp_db2 --
USE temp_db2;
-- -- Table structure for table 'Demo_Domain' --
CREATE TABLE Demo_Domain ( d_id smallint(7) unsigned NOT NULL auto_increment, d_name varchar(255) default NULL, d_type varchar(10) default NULL, d_sday varchar(20) default NULL, d_eday varchar(20) default NULL, d_email varchar(255) default NULL, d_register varchar(60) default NULL, hosting char(1) default NULL, h_name varchar(255) default NULL, h_homepage varchar(255) default NULL, h_price varchar(20) default NULL, h_sday varchar(20) default NULL, h_eday varchar(20) default NULL, h_memo text, PRIMARY KEY (d_id) ) TYPE=MyISAM;
-- -- Dumping data for table 'Demo_Domain' -- |
이 경우 필히 알아두실 것은 백업된 파일(temp_db8.sql)을 이용하여 해당 데이터베이스를 복구해야하기 때문에 백업된 파일(temp_db8.sql)내에 “USE DB명”문은 존재한다는 점입니다.
이번에는 “--all-databases”옵션을 사용하여 MYSQL의 모든 데이터베이스를 백업하여 temp_db9.sql에 저장하는 예입니다.
이때 -n옵션을 사용하여 백업결과로 생성되는 temp_db9.sql파일에 “CREATE DATABASE”라는SQL문이 추가되지 않도록 하였습니다.
[root@file bin]# pwd
/usr/local/mysql/bin [root@file bin]# ./mysqldump -u root -p -n --all-databases > temp_db9.sql Enter password: ******** [root@file bin]# [root@file bin]# ls -l temp_db9.sql -rw-r--r-- 1 root root 31894 2월 14 16:24 temp_db9.sql [root@file bin]# |
그 결과 temp_db9.sql파일을 보시면 다음과 같습니다.
즉 “--all-databases”옵션을 사용하여 MYSQL의 모든 데이터를 백업하였지만 백업결과 파일 temp_db9.sql에는 “CREATE DATABASE”라는SQL문이 추가되지 않았습니다.
[root@file bin]# cat temp_db9.sql
-- MySQL dump 9.08 -- -- Host: localhost Database: --------------------------------------------------------- -- Server version 4.0.14
-- -- Current Database: locli --
USE locli;
-- -- Current Database: mysql --
USE mysql;
-- -- Table structure for table 'columns_priv' --
CREATE TABLE columns_priv ( Host char(60) binary NOT NULL default '', Db char(64) binary NOT NULL default '', User char(16) binary NOT NULL default '', Table_name char(64) binary NOT NULL default '', Column_name char(64) binary NOT NULL default '', Timestamp timestamp(14) NOT NULL, Column_priv set('Select','Insert','Update','References') NOT NULL default '', PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) TYPE=MyISAM COMMENT='Column privileges';
-- -- Dumping data for table 'columns_priv' -- |
이 경우에도 필히 알아두실 것은 백업된 파일(temp_db9.sql)을 이용하여 해당 데이터베이스를 복구해야하기 때문에 백업된 파일(temp_db9.sql)내에 “USE DB명”문은 여전히 존재한다는 점입니다.
관련자료
-
이전
-
다음