💡 완벽한 데이터베이스 백업을 위한 IT 가이드
서버를 운영하는 시스템 관리자나 백엔드 개발자에게 데이터베이스(DB) 백업은 선택이 아닌 필수입니다. 랜섬웨어 공격, 예기치 않은 하드웨어 물리적 장애, 또는 휴먼 에러로 인한 `DROP TABLE` 등의 대형 사고가 발생했을 때, 서비스의 생명줄을 쥐고 있는 것은 오직 '안전하게 보관된 백업 파일'뿐입니다.
1. 데이터베이스별 덤프(Dump) 명령어의 이해
- MySQL / MariaDB:
mysqldump유틸리티를 사용합니다. SQL 텍스트 파일 형태로 논리적 백업을 수행하며, 테이블 구조(Schema)와 데이터(Row)를 모두 포함합니다. 트랜잭션을 지원하는 InnoDB 엔진의 경우 무결성 보장을 위해--single-transaction옵션을 추가하는 것이 좋습니다. - PostgreSQL:
pg_dump명령어를 활용합니다. 대용량 데이터 처리에 뛰어난 PostgreSQL은 압축 효율이 높으며, 역할(Role)이나 권한 설정까지 백업하기 위해서는pg_dumpall을 병행하여 사용하기도 합니다. - MongoDB: NoSQL의 대표주자인 몽고DB는 BSON(Binary JSON) 형태로 데이터를 추출하는
mongodump를 사용합니다. 아카이브 모드(--archive)를 사용하면 복수의 컬렉션을 단일 파일로 묶어서 관리하기 매우 편리합니다.
2. 시스템 장애를 대비한 '3-2-1 백업 법칙'
가장 널리 알려진 안전한 데이터 보존 전략은 3-2-1 법칙입니다. 본 자동화 툴은 이 법칙을 완벽하게 수행할 수 있도록 설계되었습니다.
- 3개의 복사본: 원본 데이터 외에 최소 2개 이상의 백업본을 유지합니다.
- 2가지 다른 매체: 로컬 서버 디스크(SSD) 외에 별도의 매체에 저장합니다. 위 생성기에서 로컬 디렉토리(Local Path)를 지정하고 보관 주기(Retention Days)를 설정하여 자동화할 수 있습니다.
- 1개의 원격지 보관: 화재나 데이터센터 장애를 대비해 오프사이트(Off-site)에 백업을 보관합니다. 본 툴에서 지원하는 rsync 전송 기능을 이용해 사내 NAS나 타 IDC의 원격 서버로 백업 파일을 매일 동기화하세요.
3. Rsync를 활용한 동기화와 용량 관리
백업 파일이 매일 누적되면 서버의 스토리지(디스크) 용량이 금방 고갈됩니다. 이를 방지하기 위해 생성된 스크립트에는 find -mtime 명령어가 포함되어 있어, 설정된 보관 일수(예: 7일)가 지난 오래된 압축 파일은 자동으로 삭제(Rotate)합니다. 또한 rsync -avz 명령어를 통해 원격 서버로 파일을 전송할 때 데이터 압축 및 변경된 내용만 전송하는 알고리즘이 적용되어 네트워크 대역폭 낭비를 최소화합니다.
4. 스크립트 자동화(Crontab) 및 보안 유의사항
위에서 생성된 스크립트를 서버에 저장한 후에는, crontab -e 명령어를 통해 매일 새벽(트래픽이 가장 적은 시간대)에 스크립트가 실행되도록 등록해야 합니다. (예: 0 3 * * * /home/user/db_backup.sh)
🚨 보안 경고: 쉘 스크립트 내부에는 데이터베이스에 접근할 수 있는 계정명과 비밀번호가 평문(Plain-text)으로 포함되어 있습니다. 따라서 스크립트 파일을 생성한 후에는 반드시 chmod 700 db_backup.sh 명령어를 실행하여, 스크립트 소유자(root 등) 외에는 아무도 열람할 수 없도록 권한을 강력하게 통제해야 합니다.