DBAtlas · 데이터베이스 운영 아틀라스

논리 백업(덤프) 수행

Oracle

expdp system/password DIRECTORY=dpump_dir \
  SCHEMAS=hr DUMPFILE=hr_%U.dmp LOGFILE=hr_exp.log PARALLEL=4

Data Pump를 사용한다. DIRECTORY 객체는 CREATE DIRECTORY로 미리 정의해야 한다. 물리 백업은 RMAN을 사용한다.

PostgreSQL

pg_dump -U postgres -h localhost -Fc -f db.dump mydb
# -Fc = compressed custom format (restored with pg_restore)

-Fc는 유연한 복원(선택적 테이블/병렬)을 지원한다. 클러스터 전체(롤 포함)는 pg_dumpall을 사용한다.

MySQL

mysqldump -u root -p --single-transaction \
  --routines --triggers --events mydb > db.sql

--single-transaction은 InnoDB에서 락 없이 일관된 백업을 제공한다. 대용량 데이터를 위한 병렬 옵션: mydumper/myloader 또는 MySQL Shell util.dumpInstance()/dumpSchemas()(mysqlpump는 8.0.34에서 deprecated되고 8.4에서 제거됨).

SQL Server

BACKUP DATABASE [MyDB]
TO DISK = N'C:\backup\MyDB_full.bak'
WITH COMPRESSION, CHECKSUM, INIT;

INIT는 기존 파일을 덮어쓰고, NOINIT는 추가한다. 로그 백업은 BACKUP LOG를 사용한다(FULL 복구 모델).

MongoDB

mongodump --uri="mongodb://localhost:27017" \
  --archive=db.archive.gz --gzip --db=mydb

샤딩된 클러스터에서는 일관성을 위해 밸런서를 중지한 상태로 mongos를 통해 수행한다.

Redis

BGSAVE
# Takes an RDB snapshot in the background (dump.rdb).
# Non-blocking copy: redis-cli --rdb /backup/dump.rdb

BGSAVE는 fork를 통해 백그라운드에서 실행된다. SAVE는 서버를 블로킹한다(운영 환경에서 사용 금지). AOF를 활성화하면 데이터 손실이 줄어든다.

DBAtlas에서 열기 →