웹모아
웹모아[손님] 검색   로그인    


 
백업/기타
 


MySQL 백업
  2007-02-23 17:50:24 댓글:(0)   조회:484



MySQL 단순 백업

 MySQL은 일반적으로 /usr/local/mysql 디렉토리에 설치한다. 여기서는 /usr/local/mysql/data 디렉토리를 데이터베이스 파일이 위치한 디렉토리로 설명한다. 이 디렉토리 아래에 MySQL의 각 데이터베이스명과 동일한 디렉토리 이름들이 잇다. 각각의 디렉토리들이 하나의 데이터베이스이다.

 가장 간단한 MySQL 백업은 데이터베이스 파일이 위치한 디렉토리를 압축하여 보관하는 것이다.

    #!/bin/bash

    from_backup_dir="/usr/local/mysql/data"

    to_backup_dir="/backup/"

    today=`date +%Y%m%d`

    tar cvfz ${to_backup_dir}${today}.tar.gz ${from_backup_dir}

 

  위와 같이 하면 각 데이터베이스를 구분하지 않고 하나의 아카이브 압축파일로 보관하게 된다. 그러므로 사용자별로 백업 파일을 복구할 경우에는 불편하다.

  이번에는 각 디렉토리별로 백업하는 스크립트를 보도록 하겠다.

     #!/bin/bash

     from_backup_dir="/usr/local/mysql/data/"

     to_dir="/backup/"

     today=`date +%Y%m%d`

     source_dir=`ls -l "$from_backup_dir" | grep ^d | awk '{print $9}'`

     for i in `echo $source_dir`

     do

         tar cfz ${to_dir}${today}${i}.tar.gz ${from_backup_dir}${i} 2>/dev/null

     done

 

 

mysqldump를 이용한 백업

  위와 같이 데이터베이스 파일을 그래로 압축해서 백업해 놓은 방식은 문제점이 잇다. 파일로 직접 백업본을 만들어 놓을 경우, 복구할 때 리눅스 배포판이나 버전이 다를 경우, 시스템 아키텍처가 다를 경우 복구가 안 되는 경우가 많다.

  따라서 MySQL을 백업할 떄는 MySQL 자체적으로 지원되는 mysqldump 유틸리티를 이용하는 경우가 많다. mysqldump 유틸리티는 데이터베이스의 내용을 텍스트 파일에 SQL 문을 이용하여 백업한다. 이렇게 백업된 파일은 vi 편집기로 볼 수 있다.

  우선 콘솔에서 현재 데이터베이스가 어던 것들이 있는지 알아보자

     echo "show databases;" | mysql -u root -p

  명령 중에서 '|' 다음에 있는 'mysql -u root -p'부분은 MySQL에 접속하기 위한 명령이다. 유저가 root이고 패스워드 옵션을 넣었다. 다음 라인에서 패스워드를 물어보게 되고, 알맞게 입력하면 원하는 쿼리문을 볼 수 잇다.

  데이터베이스 중에서 damada라는 데이터베이스가 있다고 가정하고 이를 mysqldump 유틸리티를 이용하여 백업해 보겠다.

     mysqldump amanda -u root -p > amanda.sql

  amanda라는 데이터베이스를 라이디렉션을 통하여 현재 디렉토리에 amanda.sql이라는 파일로 저장했다. amanda.sql 파일은 vi 편집기로 볼 수 있는 텍스트 파일이다.

  mysqldump의 '--all-databases'옵션으로 모든 데이터베이스를 한 번에 백업할 수 있다.

     mysqldump --all-databases -u root -p > AllMySql.sql

  root의 패스워드를 입력하면 AllMySql.sal이라는 파일로 현재의 모든 데이터베이스가 백업된다. 여기서 root는 리눅스이 슈퍼유저 계정인 root와 다르다.

  다음은 '--all-databases'옵션을 이용하여 전체를 백업하는 스크립트이다.

     #!/bin/bash

     to_dir="/backup/"

     today=`date +%Y%m%d`

     mysqldump --all-databases -u root -pshell > ${to_dir}${today}mysql.sql

  마지막 라인에서 '-pshell'은 MySQL 접속 시에 root의 패스워드인 'shell'을 -p 옵션과 같이 붙여서 적은 것이다.

  이번에는 각 데이터베이스마다 백업을 하는 스크립트를 만들어보도록 하겟다. 우선 각 데이터베이스의 이름을 가져오는 방법으로 앞에서 사용했던 ls 명령과 awk를 이용했던 방법 대신에 다음과 같은 스크립트를 사용한다.

     echo "show databases" | mysql -u root -pshell | grep -v Database

  출력화면에서 가장 윗중에 나타나는 'Database'라는 문자를 없애주기 위해서 grep의 '-v' 옵션을 사용하였다.

  각 데이터베이스별로 mysqldump를 이용하여 백업한 후에 전체 파일을 하나의 파일로 압축한다. 따라서 각 데이터베이스별 백업파일을 임시 디렉토리에 만든 후에 압축하고, 임시 디렉토리를 삭제하면 된다.

  다음은 전체 스크립트 소스이다.

     #!/bin/bash

     to_dir="/backup/"

     today=`date +%Y%m%d`

     tmp_dir="${to_dir}${today}/"

     A=`echo "show databases" | mysql -u root -pshell | grep -v Database`

     mkdir ${tmp_dir}

     for i in `echo $A`

     do

         mysqldump ${i} -u root -pshell > ${tmp_dir}${i}.sql

     done

     tar cfz ${to_dir}${today}MySQL.tar.gz ${tmp_dir} 2>/dev/null

     rm -rf $tmp_dir




 댓글 (0)


백업/기타
페이지: 1 / 2   


   XtraBackup을 이용한 MySQL 백업 및 복96
   MySQL DB 백업 및 복구 - mysqldump506
   [MySQL] 리눅스DB를 윈도우DB로 이전(Too426
     [RE] [MySQL] 리눅스DB를 윈도우DB로 이653
   정보통신부 제공 우편번호부 원본파일755
   mysql 원격접속방법710
   가격비교 참고자료(홈마스타)(3) 516
   리눅스에서 PHP 콘솔을 이용한 MySQL DB 백(홈마스타)577
   utf8 환경으로 자료 conversion 성공기(홈마스타)546
   Mysql-4.1.13 의 한글 문제. | 리눅스(홈마스타)458
   MySQL 5.0 euckr 문자세팅(홈마스타)499
   mySql 처리 함수(홈마스타)1285
   mysql의 주요 함수(홈마스타)1117
MySQL 백업(홈마스타)485
   mysql 과 함께 사용되는 명령어 사용법(홈마스타)463
   mysql의 최대 성능 향상 방법(홈마스타)794
   리눅스에서 PHP 콘솔을 이용한 MySQL DB 백(홈마스타)514
   PHP로 MySQL 백업받기(홈마스타)693
     [RE] PHP로 MySQL 백업받기(홈마스타)495
   ORDER BY 에서 조건걸기(홈마스타)566
   백업과 복구(홈마스타)556
   리눅스 서버에서 홈페이지의 DB를 백업할려면?(홈마스타)563
   MySQL 데이터 백업 및 복구 | Database(홈마스타)(1) 823
     [RE] MySQL 데이터 및 구조의 백업 - 실제(홈마스타)555
   mysql 주기적으로 백업하기(홈마스타)617
   웹서버와 DB서버를 분리해서 운영할려면?(홈마스타)751
   백업받는 스크립트(홈마스타)692
   서브 쿼리 지원되는 MySQL 버젼...(홈마스타)593
   MySQL Dump뜨는 방법 및 복구 방법(홈마스타)621
     [RE] MySQL Dump뜨는 방법 및 복구 방법(홈마스타)840
≪ [1]  [2]   ≫

복수단어 검색은 공백(space)로 구분해 주세요.



 
최근 글
[손님]
116
96
249
466
1008
402
463
258
381
3837
930
1001
1247
990
4295
 
인기 글
[손님]
6560
4540
4900
5165
[홈마스타] [RE] input type=\\
6761
3773
3174
[홈마스타] 한글 유니코드 표
3376
3073
4831
4178
3573
3597
3193
5209