시스템 가용성 확보를 위한 MySQL, PostgreSQL, MongoDB 자동화 프레임워크
현대의 데이터 주권 시대에 있어 데이터베이스 백업은 단순한 복사본 생성을 넘어선 **'비즈니스 연속성 계획(BCP)'**의 핵심입니다. 시스템 관리자는 장애 발생 시 어느 시점으로 복구할 것인지(RPO)와 얼마나 빨리 복구할 것인지(RTO)를 사전에 정의해야 합니다. 본 도구가 생성하는 스크립트는 이러한 요구사항을 충족하도록 설계되었습니다.
백업 과정 중 데이터의 정합성이 깨지는 것을 방지하기 위해 --single-transaction과 같은 일관성 보장 옵션을 자동으로 포함합니다.
GZIP 압축 알고리즘을 적용하여 텍스트 기반 SQL 덤프의 용량을 최대 90%까지 줄여 스토리지 비용을 획기적으로 절감합니다.
Retention 일수가 지난 오래된 백업을 자동으로 찾아 삭제함으로써 서버 디스크 풀(Disk Full) 장애를 사전에 원천 차단합니다.
rsync 동기화를 통해 물리적으로 분리된 장소(NAS, 타 리전 서버)로 백업본을 즉시 전송하여 재난 복구(DR) 시스템 구축을 돕습니다.
논리적 백업(Dump)은 SQL 문으로 데이터를 추출하므로 버전 간 호환성이 높고 특정 테이블만 골라 복구하는 유연성이 뛰어납니다. 본 생성기는 가장 범용적인 mysqldump, pg_dump 엔진을 채택하고 있습니다. 반면, 물리적 백업(Snapshot)은 파일 시스템 자체를 복사하여 속도는 빠르지만 하드웨어 종속성이 높다는 특징이 있습니다. 실무에서는 주간 1회의 물리 백업과 일간 논리 백업을 병행하는 것이 모범 사례로 꼽힙니다.
chmod 700 backup.sh를 실행하여 소유자만 읽을 수 있도록 설정하십시오. 또한 비밀번호를 직접 기입하는 대신 .my.cnf나 .pgpass 환경 변수 파일을 활용하는 것이 보안상 더욱 권장됩니다.
A: 백업은 전체 데이터를 읽는 과정에서 리소스를 많이 소모합니다. 서비스 사용자가 가장 적은 새벽 시간대에 크론탭(Crontab)을 이용해 실행하시고, DB 설정에서 백업용 전용 커넥션을 확보해 두는 것이 좋습니다.
A: SSH 키 기반 인증을 설정해야 합니다. ssh-keygen으로 키를 만든 뒤 ssh-copy-id 명령어로 원격 서버에 공개키를 등록하면 비밀번호 없이 자동화된 전송이 가능합니다.
A: MySQL의 경우 gunzip < dump.sql.gz | mysql -u유저 -p 디비명 명령어를 통해 압축 해제와 동시에 복원할 수 있습니다. 운영 중인 DB에 덮어쓰기 전 항상 테스트 환경에서 확인하십시오.