웹모아
웹모아[손님] 검색   로그인 / 회원가입    



 
백업/기타
 


리눅스에서 PHP 콘솔을 이용한 MySQL DB 백업
  2007-04-29 18:17:49 댓글:(0)   조회:585



기존의 DB 백업은 bash 를 셸프로그래밍 소스들이 많이 있습니다.
도스때  config.sys 와 autoexec.bat 를 만져본것 말고는 셸프로그램은 자신이 없어 PHP 를 이용해 셸 프로그램을 만들었습니다.
$dir 은 MySQL 의 DB가 들어있는 디렉토리 (반드시 끝에 /)
$backupdir 은 백업 시킬 디렉토리 ( 반드시 끝에 /)
$id 와 $pw 는 root 의 아이디와 비밀번호
$makeday 는 실행날짜에서 보관할 날짜

실행시키면 $backupdir/20060125 형식의 오늘날짜의 디렉토리가 생성되며 해당 디렉토리에 DB당 DB.sql 과 DB.tar.gz 2개의 파일이 생성됩니다.
다음날 실행하면 20060126 ... 27.. 28 식으로 날짜의 디렉토리가 생성되며 $makeday 날에 의하여 7일 이상 보관된 디렉토리는 삭제 하게 됩니다.
즉, 오늘부터 이전 $makeday 날 동안의 DB가 백업됩니다.

root 상태로 아래의 mydbbackup 파일을 만들어 chmod 로 700으로 권한을 주고
crontab 에 하루에 한번씩 돌아가게 등록시키면 됩니다.

--------------- mydbbackup (id : root / chmod : 700 이상)-------------------
#!/usr/bin/php
    $dir = '/var/lib/mysql/';
    $backupdir = '/dbbackup/';
    $id = 'root';
    $pw = 'qkdlzld2005';
    $makeday = 7;

    if (is_dir($backupdir)) {
        if ($dh = opendir($backupdir)) {
            while (($file = readdir($dh)) !== false) {
                if(is_dir($backupdir.$file) && $file != '.' && $file != '..') {
                    $day = intval((strtotime("now") - strtotime($file))/86400);
                    if($day >= $makeday) {
                        exec("rm $backupdir$file -rf");
                    }
                }
            }
            closedir($dh);
        }
    }

    if (is_dir($dir)) {
        if ($dh = opendir($dir)) {
            while (($file = readdir($dh)) !== false) {
                if(is_dir($dir.$file) && $file != '.' && $file != '..') {
                    $today = date('Ymd');
                    if(!is_dir($backupdir.$today)) {
                        exec("mkdir $backupdir$today");
                    }
                    exec("mysqldump -u $id -p$pw $file > $backupdir$today/$file.sql");
                    exec("tar zcf $backupdir$today/$file.tar.gz $dir$file 2>/dev/null");
                }
            }
            closedir($dh);
        }
    }
    clearstatcache();
?>



 댓글 (0)


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


   XtraBackup을 이용한 MySQL 백업 및 복236
   MySQL DB 백업 및 복구 - mysqldump514
   [MySQL] 리눅스DB를 윈도우DB로 이전(Too435
     [RE] [MySQL] 리눅스DB를 윈도우DB로 이662
   정보통신부 제공 우편번호부 원본파일765
   mysql 원격접속방법718
   가격비교 참고자료(홈마스타)(3) 534
리눅스에서 PHP 콘솔을 이용한 MySQL DB 백(홈마스타)586
   utf8 환경으로 자료 conversion 성공기(홈마스타)556
   Mysql-4.1.13 의 한글 문제. | 리눅스(홈마스타)465
   MySQL 5.0 euckr 문자세팅(홈마스타)513
   mySql 처리 함수(홈마스타)1297
   mysql의 주요 함수(홈마스타)1160
   MySQL 백업(홈마스타)499
   mysql 과 함께 사용되는 명령어 사용법(홈마스타)477
   mysql의 최대 성능 향상 방법(홈마스타)822
   리눅스에서 PHP 콘솔을 이용한 MySQL DB 백(홈마스타)523
   PHP로 MySQL 백업받기(홈마스타)706
     [RE] PHP로 MySQL 백업받기(홈마스타)504
   ORDER BY 에서 조건걸기(홈마스타)575
   백업과 복구(홈마스타)562
   리눅스 서버에서 홈페이지의 DB를 백업할려면?(홈마스타)572
   MySQL 데이터 백업 및 복구 | Database(홈마스타)(1) 830
     [RE] MySQL 데이터 및 구조의 백업 - 실제(홈마스타)565
   mysql 주기적으로 백업하기(홈마스타)625
   웹서버와 DB서버를 분리해서 운영할려면?(홈마스타)760
   백업받는 스크립트(홈마스타)704
   서브 쿼리 지원되는 MySQL 버젼...(홈마스타)599
   MySQL Dump뜨는 방법 및 복구 방법(홈마스타)630
     [RE] MySQL Dump뜨는 방법 및 복구 방법(홈마스타)878
[1]  [2]  

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





최근 글
[손님]

인기 글
[손님]