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)만 덤프 파일에 포함됨. - 사용 예시
- 이미 동일한 테이블이 존재하는 환경에서 데이터를 덤프할 때
- 동일한 구조의 테이블에 데이터만 추가하려는 경우
- 결과 예시 (옵션 활성화 시)
-
sqlINSERT INTO `users` (`id`, `name`, `email`) VALUES (1, 'Alice', 'alice@example.com');
2. Add DROP statements
- 설명
덤프 파일에 DROP TABLE 문을 추가하여, 백업 복원 시 기존 테이블을 먼저 삭제한 후 다시 생성하도록 함. - 사용 예시
- 덤프를 복원할 때 기존 데이터를 유지하지 않고 새로 덮어씌우고 싶을 때
- 기존 테이블과 충돌을 방지하기 위해 삭제 후 새로 생성하려는 경우
- 결과 예시 (옵션 활성화 시)
-
sqlDROP 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; 문을 포함하여, 테이블의 인덱스를 비활성화한 후 데이터를 삽입한 다음 다시 활성화함.
대량 데이터 삽입 시 성능을 향상시킬 수 있음. - 사용 예시
- 많은 데이터를 한 번에 삽입해야 할 때
- 테이블의 인덱스를 재구성하여 성능을 최적화할 때
- 결과 예시 (옵션 활성화 시)
-
sqlALTER 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 (...), (...), (...) 방식으로 덤프를 생성함.
파일 크기를 줄이고, 덤프 복원 속도를 개선할 수 있음.
데이터가 너무 많을경우 안하는게 나을수도있음. - 사용 예시
- 데이터베이스 덤프 파일의 크기를 줄이고 싶을 때
- 백업 복원 속도를 높이고 싶을 때
- 결과 예시 (옵션 활성화 시)
-
sqlINSERT 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; -
➡ (옵션 활성화 후) sqlCREATE PROCEDURE `my_procedure`()
BEGIN
SELECT * FROM users;
END;
8. Dump binaries in hex
- 설명
BLOB(Binary Large Object) 또는 VARBINARY 같은 **이진 데이터(Binary Data)**를 16진수(Hex) 형식으로 덤프함.
일반적인 텍스트 덤프보다 복원 속도가 느려질 수 있지만, 이진 데이터를 정확하게 유지할 수 있음. - 사용 예시
- 이미지, 파일, 비디오 등의 바이너리 데이터를 포함한 테이블을 백업할 때
- 데이터 손실 없이 정확하게 복원해야 할 때
- 결과 예시 (옵션 활성화 시)
-
sqlINSERT 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 | 데이터 없이 테이블 구조만 저장 | 스키마 백업 |
나의 일반적인 선택은 이걸로
'IT기술 > DB' 카테고리의 다른 글
[redis] 캐싱 전략(Caching Strategies) 정리하기, 어떤 식으로 설계하고 사용할 것인가? (1) | 2024.05.20 |
---|---|
[redis] 캐싱, 활용할 데이터 선정, 고려할 점 (0) | 2024.05.20 |
[redis] 메모리 기반 캐싱기능을 지원하는 레디스 알아보 (0) | 2024.05.20 |
[Postgre] AutoCommit 테스트해보기 (0) | 2024.02.23 |
[DB, JBDC] 데이터베이스 연결, JDBC, SQL Mapper, ORM 정리 (0) | 2024.01.29 |