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

mysqldump로 여러 개의 데이터베이스 한번에 백업하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

mysqldump로 여러 개의 데이터베이스 한번에 백업하기




 

지금까지의 mysqldump로 데이터베이스를 백업하는 예는 모두 특정 데이터베이스 하나만을 백업대상으로 하였습니다.   

 

 

  하지만 서버관리자의 입장에서는 여러 개의 데이터베이스를 동시에 백업해야하는 경우도 가끔씩 있을 것입니다.   

 

 

 특히 호스팅서버를 관리하고 있는 서버관리자분들이라면 호스팅사용자 한명이 여러 개의 데이터베이스를 사용하는 경우에 특정 사용자가 사용하는 모든 데이터베이스를 백업해야하는 경우가 이에 해당합니다.   

 

 

 

 

사용형식 : mysqldump -u root -p --databases [옵션] DB1 [DB2 DB3…] > 파일명

복구방법 : mysql -u root -p < ./파일명

 

, 위의 DB1, DB2, DB3등은 모두 데이터베이스명을 의미합니다.   

 

 

 --databases라는 옵션에 의해서 그 뒤에 나오는 모든 이름은 데이터베이스명으로 인식하게 됩니다.   

 

 

 만약 --databases라는 옵션이 생략되었다면 앞의 첫번째 DB1뒤의 이름들은 모두 테이블명으로 인식될 것이므로 여러 개의 데이터베이스를 한번에 백업할 때에는 반드시 --databases옵션을 사용하셔야 합니다.   

 

 

 

 

그리고 --databases라는 옵션으로 백업된 데이터를 복구할 때에는 위에서 보시는 바와 같이 데이터베이스를 지정하시면 않됩니다.   

 

 

  왜냐하면 --databases라는 옵션으로 백업을 하시게 되면 백업파일에 “CREATE DATABASE..” 라는 SQL문이 함께 생성되므로 복구시에 데이터베이스를 생성할 수 있기 때문입니다.   

 

 

  이 설명은 뒤에서 자세히 다룹니다.   

 

 

 

 

아래는 picasso라는 데이터베이스와  temp_db2라는 데이터베이스를 동시에 백업하여 dbs.sql파일에 백업하여 저장하는 예입니다.   

 

 

 

 

[root@file bin]# pwd

/usr/local/mysql/bin

[root@file bin]#
[root@file bin]# ./mysqldump -u root -p --databases picasso temp_db2 > dbs.sql

Enter password: ********

[root@file bin]#

[root@file bin]# ls -l dbs.sql

-rw-r--r--    1 root     root         6220  2 14 12:08 dbs.sql

[root@file bin]#

 

위와 같이 --databases라는 옵션을 사용하여 백업된 파일에는 일반적인 백업파일과는 달리 “CREATE DATABASE”라는 SQL문과 “USE DB…”라는 SQL 문이 추가되어 저장되어 있습니다.   

 

 

  이것은 백업된 파일로 복구를 할 때에 원본 데이터베이스명과 동일한 데이터베이스를 생성하고 생성된 데이터베이스에 데이터를 복구하기 위한 것입니다.   

 

 

 

 

아래의 예는 위에서 백업된 dbs.sql파일을 cat명령어로 살펴본 것입니다.   

 

 

 보시는 바와 같이 앞에서는 볼 수 없었던 CREATE DATABASE문과 USE문이 추가되어 있는 것을 확인하실 수 있습니다.   

 

 

 

 

[root@file bin]# cat dbs.sql

 

-- MySQL dump 9.08

--

-- Host: localhost    Database: temp_db2

---------------------------------------------------------

-- Server version       4.0.14

 

--

-- Current Database: temp_db2

--

 

CREATE DATABASE /*!32312 IF NOT EXISTS*/ 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'

--

 

이렇게 여러 개의 데이터베이스를 백업하였을 경우에 백업된 파일을 이용하여 복구하는 방법은 특별하지 않습니다.   

 

 

 ,  이 또한 다음의 예에서 보시는 바와 같이 SQL문으로 백업되어 저장되었기 때문에 일반적인 복구방법과 동일하다는 것을 알 수 있습니다.   

 

 

 

 

[root@file bin]# ./mysql -u root -p < ./dbs.sql

Enter password: ********

[root@file bin]#

 

 

 

관련자료

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

공지사항


뉴스광장


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