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

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@sulinux bin]# pwd

/usr/local/mysql/bin

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

Enter password: ********

[root@sulinux bin]#

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

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

[root@sulinux bin]#

 

 

 

 

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

 

 

 

 

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

 

 

 

 

 

 

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

 

 

 

 

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

 

 

 

 

 

 

[root@sulinux bin]# cat dbs.sql

-- MySQL dump 10.13  Distrib 5.1.32, for pc-linux-gnu (i686)

--

-- Host: localhost    Database: sspark_db

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

-- Server version       5.1.32--

-- 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@sulinux bin]# ./mysql -u root -p < ./dbs.sql

Enter password: ********

[root@sulinux bin]#

 

 

 

 

 

 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,806 개
  • 현재 접속자 :  121 명