Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

mysqldump 완벽 가이드 – MySQL 데이터베이스 백업 프로그램

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 옵션을 사용해야 합니다.