mysqldump란 무엇인가?
mysqldump는 논리적 백업(logical backup)을 수행하는 MySQL 클라이언트 유틸리티입니다. 이 도구는 실행 시 원본 데이터베이스의 객체 정의와 테이블 데이터를 그대로 재현할 수 있는 일련의 SQL 문장을 생성합니다.
mysqldump의 주요 용도
하나 이상의 MySQL 데이터베이스를 덤프하여 백업하거나 다른 SQL 서버로 전송할 수 있습니다.
CSV, 기타 구분자로 구분된 텍스트 파일 또는 XML 형식으로도 출력을 생성할 수 있습니다.
mysqldump를 사용하려면 최소한 다음 권한이 필요합니다. 덤프할 테이블에 대한
SELECT, 뷰에 대한SHOW VIEW, 트리거에 대한TRIGGER, 그리고--single-transaction옵션을 사용하지 않는 경우LOCK TABLES,--no-tablespaces옵션을 사용하지 않는 경우PROCESS권한이 요구됩니다.개발 및 DBA 작업을 위해 데이터베이스를 복제하거나, 테스트 목적으로 기존 데이터베이스의 변형된 사본을 만드는 데에도 활용할 수 있습니다.
대규모 백업 및 복원 작업에는 물리적 백업(physical backup)이 권장됩니다. 데이터 파일을 원본 형식 그대로 복사하면 복원 속도가 크게 향상되기 때문입니다.
테이블이 주로 InnoDB이거나 InnoDB와 MyISAM이 혼재된 경우에는 MySQL Enterprise Backup 제품의
mysqlbackup명령어를 사용하는 것이 좋습니다. 이 도구는 InnoDB 백업에서 최고의 성능을 제공하며 운영 중단 시간을 최소화합니다.mysqldump는 테이블 내용을 한 행씩 읽어 덤프하는 방식과, 테이블 전체 내용을 메모리에 버퍼링한 후 한 번에 덤프하는 방식을 모두 지원합니다.
기본 구문(Syntax)
mysqldump는 세 가지 방식으로 사용할 수 있습니다. 하나 이상의 테이블 집합을 덤프하거나, 하나 이상의 완전한 데이터베이스를 덤프하거나, MySQL 서버 전체를 덤프하는 것입니다.
shell> mysqldump [options] db_name [tbl_name ...]
shell> mysqldump [options] --databases db_name ...
shell> mysqldump [options] --all-databases
데이터베이스 전체를 덤프하고 싶다면 db_name 뒤에 테이블 이름을 지정하지 않아야 하며, --databases 또는 --all-databases 옵션을 사용해야 합니다.