웹모아
웹모아[손님] 검색 로그인   
웹모아
 
백업/기타
 


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



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)


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

 

  MySQL 5.0 euckr 문자세팅
MySQL 4.1이상 부터는 글자셋 관리가 상당히 복잡하게 되어있습니다. MySQL내부적으로는 유니코드(utf-8 인코딩) 을 사용합니다. 따라서 character_set_system 의 값은 바꾸지 못하게 되어 있습니다. 나머지는 사용자가 설정하게 되어 있지요... init_connect=SET collation_connection = eu(홈마스타)     조회(497)          




  mySql 처리 함수
1) 숫자 함수 ABS(X) : X 에 해당하는 절대 값을 돌려준다. SIGN(X) : X의 값의 부호 값을 돌려 준다.(-1 : 음수, 0 : 0, 1 : 양수) MOD(N,M) : N을 M으로 나눈 값의 나머지를 돌려 준다. FLOOR(X) : 실수 X 값의 소수점 이하의 값은 버림을 한 정수 값을 돌려 준다. CEILING(X) (홈마스타)     조회(1279)          




  mysql의 주요 함수
여기서는 mysql의 주요 함수에 대해서 설명한다. 지면관계 상 모든 함수를 설명하지는 못했으며 기초적인 함수와 중요함수 위주로 설명했다. 또한 mysql은 개발 속도가 비교적 빠른 데이터베이스 이므로 가능한 매뉴얼을 참고하는 것이 바람직하다.편의를 위해 각 함수의 결과는 간략하게 표현했다.예를 들어 다음 문장의 실행 결과를 mysql>(홈마스타)     조회(1099)          




  MySQL 백업
MySQL 단순 백업  MySQL은 일반적으로 /usr/local/mysql 디렉토리에 설치한다. 여기서는 /usr/local/mysql/data 디렉토리를 데이터베이스 파일이 위치한 디렉토리로 설명한다. 이 디렉토리 아래에 MySQL의 각 데이터베이스명과 동일한 디렉토리 이름들이 잇다. 각각의 디렉토리들이 하나의 데이터베이스이다.  (홈마스타)     조회(482)          




  mysql 과 함께 사용되는 명령어 사용법
■ mysql sql 문장을 수행하는 터미날이다. 대화식 사용과 비대화식 질문을 지원한다. sql문을 라인 에디터 상태에서 바로작성하여 실행하면 된다. 사용법은 mysql mysql 하면 바로 사용할수 있다.(root 계정일 경우) 일반 계정 사용자는 mysql -u root mysql 하면된다. (암호가 없을경우) mysql 에 대한 사(홈마스타)     조회(460)          




  mysql의 최대 성능 향상 방법
10.1 버퍼 크기 조정 mysqld 서버가 사용하는 기본 버퍼 크기는 다음의 명령으로 알 수 있다. shell> mysqld --help 이 명령은 모든 mysqld 옵션의 목록과 설정 변수를 보여준다. 출력되는 내용은 기본값을 포함하고 있으며 다음과 비슷하다. Possible variables for option --set-vari(홈마스타)     조회(775)          




  리눅스에서 PHP 콘솔을 이용한 MySQL DB 백
기존의 DB 백업은 bash 를 셸프로그래밍 소스들이 많이 있습니다. 도스때 config.sys 와 autoexec.bat 를 만져본것 말고는 셸프로그램은 자신이 없어 PHP 를 이용해 셸 프로그램을 만들었습니다. $dir 은 MySQL 의 DB가 들어있는 디렉토리 (반드시 끝에 /) $backupdir 은 백업 시킬 디렉토리 ( 반드시 끝에 /) (홈마스타)     조회(513)          




  PHP로 MySQL 백업받기
FTP에서 DB라는 디렉토리를 생성하고, CHMOD를 777로 줍니다. 그런 다음 위 파일을 FTP로 DB디렉토리로 업로드한 다음 브라우저에서 http://도메인/db/dbdump.php 라고 주소창에 입력하면 전체 MySQL의 DB를 백업하여 줍니다. 물론 복구기능은 제공하지 않으니 텔넷으로 접속하여 복구하세요.(홈마스타)     조회(687)          




    [RE] PHP로 MySQL 백업받기
(홈마스타)     조회(494)          




  ORDER BY 에서 조건걸기
예를 들어 컬럼에 값이 한국 미국 일본 중국 이렇게 있는상태에서 중국만 맨 앞으로 오도록 정렬히는 방법 order by if(nara='중국','가', nara) asc(홈마스타)     조회(561)          




≪ [1]  [2]  [3]  [4]   ≫

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




최근 글
[손님]


인기 글
[손님]