mysqldump을 이용하면 아래 이미지처럼 sql 형태의 백업 파일을 생성할 수 있다. 데이터베이스 전체를 백업할 수도 있고 개별 테이블 백업도 가능하다.
1. 특정 테이블 백업
이 글에선 리눅스를 기준으로 설명하지만 윈도우에서도 mysql 클라이언트를 통해 cli 환경에서 거의 비슷하게 쓸 수 있다.
-- 테이블 백업
mysqldump -u [계정명] -p[비밀번호] [데이터베이스명] [테이블명] > [백업파일명].sql
-- 전체 데이터베이스 백업
mysqldump -u [계정명] -p[비밀번호] [데이터베이스명] > [백업파일명].sql
처음엔 헷갈릴 수 있는데 mysqldump는 sql 구문이 아니다. mysql 데이터베이스를 sql 형식의 파일로 내보내는 데 사용하는 명령줄 유틸리티다. mysql에 접속해서 쿼리를 날리는 게 아니라 명령어를 사용하는 거다.
classicmodels라는 데이터베이스의 customers라는 테이블을 sql로 내보내 백업해보자.
[root@localhost mysqldump]# mysqldump -u root -p[비밀번호] classicmodels customers > customers.sql
빨간색은 비밀번호라 가렸다. -p뒤에 공백없이 비밀번호를 써야 한다.
customers.sql로 백업 파일이 생성된 게 보인다.
2. 백업 파일 확인
백업한 파일 내용을 까보면 mysqldump가 어떤 방식으로 sql을 내보내는지 이해가 될 거다.
보다시피 백업한 테이블을 drop하고 create 한 뒤에 백업한 시점의 데이터를 모두 insert 하는 sql 구문으로 구성되어 있다.
데이터 복원을 원하면 이 sql을 실행하면 되는 거다.
3. 주의사항
일반적 수준에서는 고려하지 않아도 되는 사항이긴 한데 백업하려는 데이터베이스나 테이블의 크기를 사전에 확인을 해보는 게 좋다. 용량이 너무 크면 백업에 시간도 오래 걸리고 그만큼 디스크도 늘어난다.