본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/DB

[Mysql] DBeaver 덤프 옵션 정리

by 미노드 2025. 2. 4.

DBeaver로 덤프 파일을 만드려고 하는데, 옵션 설명이 모호하여 한번 정리하려고 한다.

DB마다 비슷비슷하게 제공하는 옵션들이 각기 다른 이름으로 존재한다.
이를 인터페이스 형식으로 공통된 이름으로 풀어서 DBeaver가 제공하는걸로 보인다.

옵션은 총 9개가 있다.

No CREATE statements
Add DROP statements
Disable keys
Extended inserts
Dump events
Additional comments
Remove DEFINER
Dump binaries in hex
Structure only

1. No CREATE statements

  • 설명
    테이블을 생성하는 CREATE TABLE 문을 포함하지 않음.
    즉, 테이블의 구조(Schema)는 내보내지 않고, 데이터(INSERT INTO)만 덤프 파일에 포함됨.
  • 사용 예시
    • 이미 동일한 테이블이 존재하는 환경에서 데이터를 덤프할 때
    • 동일한 구조의 테이블에 데이터만 추가하려는 경우
  • 결과 예시 (옵션 활성화 시)
  • sql
    INSERT INTO `users` (`id`, `name`, `email`) VALUES (1, 'Alice', 'alice@example.com');

2. Add DROP statements

  • 설명
    덤프 파일에 DROP TABLE 문을 추가하여, 백업 복원 시 기존 테이블을 먼저 삭제한 후 다시 생성하도록 함.
  • 사용 예시
    • 덤프를 복원할 때 기존 데이터를 유지하지 않고 새로 덮어씌우고 싶을 때
    • 기존 테이블과 충돌을 방지하기 위해 삭제 후 새로 생성하려는 경우
  • 결과 예시 (옵션 활성화 시)
  • sql
    DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `id` INT PRIMARY KEY, `name` VARCHAR(255), `email` VARCHAR(255) );
    INSERT INTO `users` (`id`, `name`, `email`) VALUES (1, 'Alice', 'alice@example.com');

3. Disable keys

  • 설명
    ALTER TABLE ... DISABLE KEYS; 문을 포함하여, 테이블의 인덱스를 비활성화한 후 데이터를 삽입한 다음 다시 활성화함.
    대량 데이터 삽입 시 성능을 향상시킬 수 있음.
  • 사용 예시
    • 많은 데이터를 한 번에 삽입해야 할 때
    • 테이블의 인덱스를 재구성하여 성능을 최적화할 때
  • 결과 예시 (옵션 활성화 시)
  • sql
    ALTER TABLE `users` DISABLE KEYS; INSERT INTO `users` (`id`, `name`, `email`) VALUES (1, 'Alice', 'alice@example.com');
    INSERT INTO `users` (`id`, `name`, `email`) VALUES (2, 'Bob', 'bob@example.com');
    ALTER TABLE `users` ENABLE KEYS;

4. Extended inserts

  • 설명
    INSERT 문을 하나씩 실행하는 것이 아니라 여러 개의 행을 한 번에 삽입하는 INSERT INTO ... VALUES (...), (...), (...) 방식으로 덤프를 생성함.
    파일 크기를 줄이고, 덤프 복원 속도를 개선할 수 있음.
    데이터가 너무 많을경우 안하는게 나을수도있음.
  • 사용 예시
    • 데이터베이스 덤프 파일의 크기를 줄이고 싶을 때
    • 백업 복원 속도를 높이고 싶을 때
  • 결과 예시 (옵션 활성화 시)
  • sql
    INSERT INTO `users` (`id`, `name`, `email`) VALUES (1, 'Alice', 'alice@example.com'), (2, 'Bob', 'bob@example.com'), (3, 'Charlie', 'charlie@example.com');

5. Dump events

  • 설명
    MySQL의 **이벤트(Event)**를 포함하여 덤프를 생성함.
    이벤트는 특정 시간에 자동으로 실행되는 작업(예: 스케줄러 역할)임.
  • 사용 예시
    • MySQL에서 이벤트 스케줄러를 사용하고 있으며, 백업 시 포함해야 할 때
    • 데이터 변경 작업을 자동화하는 MySQL 이벤트를 백업하고 싶을 때
  • 결과 예시 (옵션 활성화 시)
  • sql
  •  
    CREATE EVENT `my_event` ON SCHEDULE EVERY 1 DAY DO UPDATE users SET last_login = NOW() WHERE active = 1;

6. Additional comments

  • 설명
    덤프 파일에 추가적인 **주석(Comment)**을 포함하여, 각 부분의 역할을 명확히 설명함.
    덤프 파일을 사람이 쉽게 읽고 이해할 수 있도록 도와줌.
  • 사용 예시
    • 백업 파일을 다른 사람이 확인해야 하는 경우
    • 복원 시 중요한 정보를 쉽게 확인할 수 있도록 할 때
  • 결과 예시 (옵션 활성화 시)
  • sql
    -- 테이블 생성 CREATE TABLE `users` ( `id` INT PRIMARY KEY, `name` VARCHAR(255), `email` VARCHAR(255) );
    -- 데이터 삽입 INSERT INTO `users` (`id`, `name`, `email`) VALUES (1, 'Alice', 'alice@example.com');

7. Remove DEFINER

  • 설명
    DEFINER= 구문을 제거하여, 스토어드 프로시저(Stored Procedure), 트리거(Trigger), 이벤트(Event) 등을 덤프할 때 특정 사용자의 권한 정보가 포함되지 않도록 함.
  • 사용 예시
    • 다른 환경(예: 로컬 개발 → 운영 서버)으로 덤프를 이동할 때
    • 특정 사용자 계정이 없는 환경에서도 덤프 파일을 실행할 수 있도록 할 때
  • 결과 예시 
  • ➡ (옵션 활성화 전) sql
    CREATE DEFINER=`root`@`localhost` PROCEDURE `my_procedure`()
    BEGIN 
       SELECT * FROM users;
    END;
  • ➡ (옵션 활성화 후) sql 
    CREATE PROCEDURE `my_procedure`()
    BEGIN
       SELECT * FROM users;
    END;

8. Dump binaries in hex

  • 설명
    BLOB(Binary Large Object) 또는 VARBINARY 같은 **이진 데이터(Binary Data)**를 16진수(Hex) 형식으로 덤프함.
    일반적인 텍스트 덤프보다 복원 속도가 느려질 수 있지만, 이진 데이터를 정확하게 유지할 수 있음.
  • 사용 예시
    • 이미지, 파일, 비디오 등의 바이너리 데이터를 포함한 테이블을 백업할 때
    • 데이터 손실 없이 정확하게 복원해야 할 때
  • 결과 예시 (옵션 활성화 시)
  • sql
    INSERT INTO `files` (`id`, `file_data`) VALUES (1,0xFFD8FFE000104A46494600010101006000600000FFDB0043);

9. Structure only

  • 설명
    테이블의 구조(Schema)만 덤프하고, 데이터(INSERT INTO)는 포함하지 않음.
  • 사용 예시
    • 데이터 없이 테이블 구조만 생성해야 할 때
    • 새로운 환경에서 동일한 테이블을 만들고 데이터를 따로 삽입할 때
  • 결과 예시 (옵션 활성화 시)
  • sql
    복사편집
    CREATE TABLE `users` ( `id` INT PRIMARY KEY, `name` VARCHAR(255), `email` VARCHAR(255) );

정리

No CREATE statements CREATE TABLE 없이 데이터만 덤프 기존 테이블에 데이터 추가
Add DROP statements DROP TABLE을 추가하여 테이블 삭제 후 복원 테이블 덮어쓰기
Disable keys 인덱스 비활성화 후 데이터 삽입 대량 데이터 삽입 최적화
Extended inserts 여러 행을 한 번에 삽입 백업 파일 크기 줄이기
Dump events MySQL 이벤트 포함 이벤트 스케줄러 사용
Additional comments SQL 주석 추가 문서화 및 가독성 향상
Remove DEFINER DEFINER= 제거 사용자 계정 영향 방지
Dump binaries in hex BLOB/VARBINARY 데이터를 HEX로 저장 이진 데이터 백업
Structure only 데이터 없이 테이블 구조만 저장 스키마 백업

나의 일반적인 선택은 이걸로