테스트 사이트 - 개발 중인 베타 버전입니다

mysql 자동 백업 채택완료

parkhyun 3년 전 조회 2,697

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

 

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

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

방법이 있을까요?

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

답변 2개

채택된 답변
+20 포인트
3년 전

방법은 여러가지일텐데

기본 덤프 구문에 기반해

</p>

<p>mysqldump ... mydb t1 t2 t3 > mydb_tables.sql</p>

<p>

 

</p>

<p><?php</p>

<p>$tables = '';</p>

<p>$tables_ignore = ['t4', 't5'];</p>

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

<p>for ( $row = ... ) {</p>

<p>    $tbl = $row[...];</p>

<p>    if (in_array($tbl, $tables_ignore) == true) {</p>

<p>        continue;</p>

<p>    }</p>

<p>    $tables .= ' ' . $tbl;</p>

<p>}</p>

<p> </p>

<p>if (empty($tables) === false) {</p>

<p>    // <a href="https://www.php.net/manual/en/ref.exec.php" target="_blank" rel="noopener noreferrer">https://www.php.net/manual/en/ref.exec.php</a> 관련 함수로 명령 전달</p>

<p>}</p>

<p>?></p>

<p>

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

 

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

</p>

<p>mysqldump ... mydb t1 > mydb_tables_t1.sql</p>

<p>mysqldump ... mydb t2 > mydb_tables_t2.sql</p>

<p>mysqldump ... mydb t3 > mydb_tables_t3.sql</p>

<p>

 

crontab 을 사용하는 환경이라도

max_execution_time

memory_limit

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

p
parkhyun
3년 전
감사합니다.

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

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

--ignore-table=DATABASE.table1

길어지긴 하겠지만

이거 쓰시면 됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

p
parkhyun
3년 전
감사합니다.

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

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

로그인