mysql 자동 백업
본문
mysql 자동 백업을 하려고 합니다.
방법은 php 파일을 만들어서 거기에 명령어를 넣고 리눅스 crontab을 이용하여 반복 설정하려고 합니다.
근데 몇개의 테이블이 용량이 커서 제외하고 백업을 하려고 하는데요.
방법이 있을까요?
답변 2
방법은 여러가지일텐데
기본 덤프 구문에 기반해
mysqldump ... mydb t1 t2 t3 > mydb_tables.sql
<?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' 이부분만 교체해 주는 식으로 만들어도 될것 같고
아니면 아래처럼 개별로 떨어지게 해도 될것 같구요.
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 가 나을 수도 있구요.
!-->!-->!-->https://stackoverflow.com/questions/425158/how-to-skip-certain-database-tables-with-mysqldump
--ignore-table=DATABASE.table1
길어지긴 하겠지만
이거 쓰시면 됩니다.
답변을 작성하시기 전에 로그인 해주세요.