강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

mysqldump로 백업시에 create database문을 생략하여 백업하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

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문은 여전히 존재한다는 점입니다.   

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,791 개
  • 현재 접속자 :  213 명