Server

DB 백업 스크립트 (우분투 기준)

by 보석 posted May 15, 2011
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄


우선 php5-cli 가 설치되어 있어야 한다. ( apt-get install php5-cli )

/etc/cron.daily/backup-database.php 파일을 만들어서 루트 실행 권한을 준다. (매일 새벽에 4~5시경 실행)
(chmod 755 backup-database.php 혹은 chmod 700 backup-database.php)그리고 아래의 코드를 넣는다.

본 스크립트는 $디렉토리/$서버이름/$DB네임/$백업파일 에 DB 백업 파일을 저장하게 된다.
60일이 지난 백업 파일은 자동으로 삭데 된다.

 

 #!/usr/bin/php
<?
        $serverName = 'jack';
        $backupDir = '/cutty/database/'.$serverName;
        $mysqldump = '/usr/bin/mysqldump';
        $mysqlId = 'root';
        $mysqlPass = 'password';
        $date = date('ymd', time());
        $expire = date('ymd', strtotime('-60 days'));        $dbConn = new mysqli('localhost', $mysqlId, $mysqlPass);
        $query = $dbConn->query('show databases');
        while($row = $query->fetch_assoc())
        {
                $databases[] = $row['Database'];
                if(!is_dir($backupDir.'/'.$row['Database']))
                {
                        mkdir($backupDir.'/'.$row['Database']);
                }
                exec($mysqldump.' -u '.$mysqlId.' -p'.$mysqlPass.' --single-transaction '.$row['Database'].' > '.$backupDir.'/'.$row['Database'].'/'.$date.'_'.$row['Database'].'.sql');
                exec('gzip '.$backupDir.'/'.$row['Database'].'/'.$date.'_'.$row['Database'].'.sql');
                @unlink($backupDir.'/'.$row['Database'].'/'.$expire.'_'.$row['Database'].'.sql.gz');
        }
?>


 

 

./backup-database.php 식으로 실행하여 테스트 할 수 있다.