mysqlpump는 MySQL에서 제공하는 클라이언트 백업 유틸리티로, 논리적 백업(logical backup)을 수행합니다. 논리적 백업이란 원본 데이터베이스의 객체 정의와 테이블 데이터를 그대로 재현할 수 있는 SQL 문의 집합을 생성하는 방식을 의미합니다. 이를 통해 하나 이상의 MySQL 데이터베이스를 손쉽게 덤프(dump)하여 백업하거나, 다른 SQL 서버로 데이터를 이전할 수 있습니다.
mysqlpump의 주요 기능
mysqlpump가 기존 백업 도구와 차별화되는 핵심 기능은 다음과 같습니다.
병렬 처리 지원: 데이터베이스 단위는 물론, 데이터베이스 내부 객체 단위로도 병렬 처리가 가능해 덤프 작업 속도가 크게 향상됩니다.
세밀한 선택 제어: 어떤 데이터베이스와 객체(테이블, 저장 프로시저, 사용자 계정 등)를 덤프할지 세부적으로 지정할 수 있습니다.
사용자 계정 덤프 방식 개선: 사용자 계정을 mysql 시스템 데이터베이스에 INSERT 하는 방식 대신, CREATE USER 및 GRANT 같은 계정 관리 문(account-management statements) 형태로 덤프합니다.
압축 출력 지원: 덤프 파일을 압축된 형태로 생성할 수 있어 저장 공간을 절약합니다.
진행률 표시기: 백업 진행 상황을 추정치와 함께 실시간으로 확인할 수 있습니다.
빠른 덤프 파일 복원: InnoDB 테이블의 경우, 행(row) 삽입을 먼저 수행한 후 보조 인덱스(secondary index)를 생성하는 방식으로 덤프 파일 재적재(reload) 속도를 높입니다.
mysqlpump 기본 사용법과 문법
1. 전체 데이터베이스 백업
기본 설정에서 mysqlpump는 모든 데이터베이스를 덤프합니다. 이 동작을 명시적으로 지정하려면 --all-databases 옵션을 사용하면 됩니다.
shell> mysqlpump --all-databases
2. 특정 데이터베이스 또는 테이블 백업
단일 데이터베이스만 덤프하거나, 데이터베이스 내 특정 테이블만 덤프하려면 명령줄에 데이터베이스 이름을 지정하고, 필요에 따라 테이블 이름을 함께 입력합니다.
shell> mysqlpump db_name
shell> mysqlpump db_name tbl_name1 tbl_name2 ...
3. 여러 데이터베이스 백업
모든 이름 인수를 데이터베이스 이름으로 취급하려면 --databases 옵션을 사용합니다.
shell> mysqlpump --databases db_name1 db_name2 ...
4. 포함/제외 옵션 활용
mysqlpump는 데이터베이스, 테이블, 저장 프로그램(stored programs), 사용자 정의(user definitions)를 포함하거나 제외할 수 있는 다양한 옵션을 지원합니다. 이를 통해 필요한 부분만 선별적으로 백업할 수 있습니다.
5. 덤프 파일 복원하기
생성된 덤프 파일을 복원하려면 해당 파일에 포함된 SQL 문을 실행하면 됩니다. 아래 예시처럼 리다이렉션(>)으로 덤프 파일을 생성한 후, mysql 클라이언트로 불러올 수 있습니다.
shell> mysqlpump [options] > dump.sql
shell> mysql < dump.sql
이처럼 mysqlpump는 병렬 처리와 세밀한 제어 기능을 갖춘 강력한 MySQL 백업 도구로, 대용량 데이터베이스 환경에서 백업 시간을 단축하고 유연성을 높이고자 할 때 특히 유용합니다.