채택완료

mysql 자동 백업

2022-10-13 (목) 12:03:05 3,041

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개

감사합니다.
2022-10-13 (목) 14:18:56

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

--ignore-table=DATABASE.table1

길어지긴 하겠지만

이거 쓰시면 됩니다.

답변에 대한 댓글 1개

감사합니다.

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