답변 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 가 나을 수도 있구요.
https://stackoverflow.com/questions/425158/how-to-skip-certain-database-tables-with-mysqldump
--ignore-table=DATABASE.table1
길어지긴 하겠지만
이거 쓰시면 됩니다.
답변을 작성하려면 로그인이 필요합니다.