채택완료

mysql 자동 백업

mysql 자동 백업을 하려고 합니다.

방법은 php 파일을 만들어서 거기에 명령어를 넣고 리눅스 crontab을 이용하여 반복 설정하려고 합니다.

근데 몇개의 테이블이 용량이 커서 제외하고 백업을 하려고 하는데요.

방법이 있을까요?

|

답변 2개 / 댓글 2개

채택된 답변
+20 포인트

방법은 여러가지일텐데

기본 덤프 구문에 기반해

Copy
mysqldump ... mydb t1 t2 t3 > mydb_tables.sql
Copy
<?php

$tables = '';

$tables_ignore = ['t4', 't5'];

$result = mysqli_query('SHOW TABLES'); // 혹은 information_schema.TABLES 에서 기준용량 검색

for ( $row = ... ) {

    $tbl = $row[...];

    if (in_array($tbl, $tables_ignore) == true) {

        continue;

    }

    $tables .= ' ' . $tbl;

}

 

if (empty($tables) === false) {

    // https://www.php.net/manual/en/ref.exec.php 관련 함수로 명령 전달

}

?>

이후 ' t1 t2 t3' 이부분만 교체해 주는 식으로 만들어도 될것 같고

아니면 아래처럼 개별로 떨어지게 해도 될것 같구요.

Copy
mysqldump ... mydb t1 > mydb_tables_t1.sql

mysqldump ... mydb t2 > mydb_tables_t2.sql

mysqldump ... mydb t3 > mydb_tables_t3.sql

crontab 을 사용하는 환경이라도

max_execution_time

memory_limit

옵션 등 미리 확인해보시는것도 좋습니다.

제한이 걸릴경우 차라리 ShellScript 가 나을 수도 있구요.

답변에 대한 댓글 1개

https://stackoverflow.com/questions/425158/how-to-skip-certain-database-tables-with-mysqldump

--ignore-table=DATABASE.table1

길어지긴 하겠지만

이거 쓰시면 됩니다.

답변에 대한 댓글 1개

답변을 작성하려면 로그인이 필요합니다.