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

MySQL강좌22편:MYSQL 데이터베이스 데이터 백업과 복구 실무

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

MySQL강좌22:MYSQL 데이터베이스 데이터 백업과 복구 실무

 

1. MYSQL 데이터 복구 실무

 

여러분들과 필자 같은 서버관리자들이 서버관리업무를 할 때에 가장 예민한 부분이 아마도 해킹과 백업부분이 아닐까 생각된다. 물론, 서버의 성능과 안정성이 보장되어야하는 것은 당연히 기본적인 사항이다. 하지만 실질적으로 백업을 아무리 잘 해두어도 불안한 마음은 언제나 존재한다.  백업하는 도중에도 새로운 데이터가 계속 쌓이고있기 때문이다. 그리고 백업을 완료한 순간부터 백업한 데이터는 현재의 데이터가 아닌 예전데이터가 되어버리기 때문이다.

 

그리고 백업을 해두어도 백업한 데이터로 정상적인 복구가 가능한가에 대한 의문점도 늘 존재한다.  어쨌든 우리 서버관리자들은 여러가지면에서 심적인 부담을 떨쳐버릴 수가 없는 것은 사실인 것 같다.

 

여기서 설명드릴 내용은 MYSQL 데이터베이스를 백업하는 여러가지 방법에 대한 것이다.   필자의 경우 MYSQL은 다음과 같은 두가지 방법으로 백업하고 있다.

 

첫번째 백업방법 : /usr/local/mysql/전체를 매일 압축백업한다.
두번째 백업방법 : mysqldump명령어로 MYSQL스키마와 데이터만 백업한다.

 

 

2. /usr/local/mysql/ 디렉토리전체를 압축백업하기

 

이 책에서는 주로 두번째 방법인 mysqldump를 이용한 데이터백업에 대하여 설명하고있다. 이를 설명하기에 첫번째 방법인 MYSQL전체를 tar로 백업하기 위한 방법부터 설명드리겠다. 사실 이 방법은 여러분들도 너무나 잘 알고있는 방법이다. 알고있는 것을 확인한다는 차원에서 간단하게 언급하고 넘어가도록 하겠다.


다음은 tar를 이용하여 /usr/local/mysql/에 존재하는 모든 디렉토리들과 파일들을 백업한 예이다.

 

[root@sulinux ~]#tar cvfpz /backup/mysql.tar.gz /usr/local/mysql

tar: Removing leading `/' from member names

/usr/local/mysql/

/usr/local/mysql/man/

/usr/local/mysql/man/man8/

/usr/local/mysql/man/man8/mysqld.8

/usr/local/mysql/man/man8/ndb_mgmd.8

/usr/local/mysql/man/man8/mysqlmanager.8

/usr/local/mysql/man/man8/ndbd.8

/usr/local/mysql/man/man1/

/usr/local/mysql/man/man1/mysqlaccess.1

/usr/local/mysql/man/man1/ndb_select_all.1

/usr/local/mysql/man/man1/ndb_show_tables.1

/usr/local/mysql/man/man1/make_win_bin_dist.1

/usr/local/mysql/man/man1/mysql_convert_table_format.1

이하 생략

 

위와같이 실행하면 /backup디렉토리내에 /usr/local/mysql의 모든 파일들과 디렉토리들이 압축되어 mysql.tar.gz라는 파일명으로 백업된다. 다음은 백업된 내용을 확인한 것이다.

 

[root@sulinux ~]#ls -l /backup

합계 32200

-rw-r--r-- 1 root root 32933166  4 30 00:08 mysql.tar.gz

[root@sulinux ~]#

 

위의 예는 /backup디렉토리내에 압축되어 저장된 mysql.tar.gz파일을 확인한 것이다. 참고로 방금 실행한 tar압축명령어를 root계정의 cron에 넣어두시면 매일, 매주, 매월 주기로 자동백업되도록 설정할 수 있다.

 

 

3. MYSQL 데이터백업하기 개론

 

여러분들도 잘 알겠지만 mysqldump명령어는 MYSQL의 전체 혹은 일부데이터를 SQL파일형태로 백업하는 관리자유틸리티이다. mysqldump를 이용하면 MYSQL의 전체 데이터베이스 데이터뿐아니라 개별데이터베이스의 데이터백업, 그리고 특정데이터베이스의 특정데이터들을 원하는 부분만 백업할 수 있다. 먼저, mysqldump 명령어의 위치와 MYSQL 매뉴얼에 공식적으로 지정되어있는 mysqldump의 사용형식 3가지를 살펴보면 다음과 같다.

 

사용형식 1 : mysqldump [옵션]  DB [TABLES…] > 파일명

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

사용형식 3 : mysqldump [옵션] --all-databases [옵션] > 파일명

 

명령어 사용형식1에서 DB는 백업대상이 되는 데이터베이스명이고 TABLES는 지정한 백업대상 데이터베이스내에 존재하는 테이블명이다. 따라서 이 백업의 의미는 DB의 데이터베이스내에 존재하는 테이블의 내용을 백업하여 파일명에 저장하라는 의미이다.

 

명령어 사용형식2에서 --databases라는 옵션에 의해 DB1 DB2 DB3….의 데이터베이스들을 백업하여 파일명에 저장한다.  즉 백업대상이되는 데이터베이스가 2개이상이 될 때에는 --databases라는 옵션을 사용하고 그 뒤에 백업할 데이터베이스를 지정해주면 된다.

 

명령어 사용형식 3에서 --all-databases라는 옵션은 MYSQL내에 존재하는 모든 데이터베이스를 백업대상으로한다는 의미이다. 따라서 MYSQL내의 모든 데이터베이스들을 백업하여 파일명에 저장한다라는 의미가 된다.

 

그리고 이외에도 “mysqldump --help”를 보면 mysqldump에서 사용할 수 있는 다양한 백업옵션들이 있다.

 

관련자료

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

공지사항


뉴스광장


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