DB 백업 자동화 시스템 (개발)

1 minute read

개요

회사에서 DB 백업을 기존에 쉘스크립트를 이용하여 하고 있었다.
서버가 100개라고 치면 100개 서버에 스크립트를 깔고 수정도 해아하고 번거로운 일인거 같았다.
이번기회에 시스템을 개발 하기로 하였다.

기능

  1. DB version별 동작 로직 설정
  2. 백업 옵션 지정
  3. SSH 접속하여 로컬 백업, Network 백업 선택
  4. 작업 시작 설정
  5. 백업 본 삭제 기간 설정
  6. DB 단위 백업, Table 단위 백업
  7. 압축 여부 설정

구조

1. DB에 DB정보 및 백업할 데이터 등 스케줄 등록
2. 해당 정보를 이용하여 백업 진행
3. 백업 보존 기간이 지난 데이터 삭제 처리

DB 백업은 mysqldump를 이용하여 진행 하였고 -h 옵션을 이용하여 네트워크를 통하여 백업을 해도 되지만
데이터량이 많은 경우 네트워크 부하가 발생하게 된다.
그러하여 SSH로 접속 후 로컬에서 진행 하는 방법을 사용, Flag를 설정하여 네트워크를 이용할지 로컬로 백업할지 선택 할 수 있게 한다.

스키마

CREATE TABLE `backup_manager_schedule` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `server_id` varchar(30) NOT NULL,
  `hostname` varchar(100) NOT NULL,
  `db_ip` varchar(15) NOT NULL,
  `db_port` varchar(15) DEFAULT NULL,
  `db_user` varchar(50) NOT NULL,
  `db_pw` varchar(100) DEFAULT NULL,
  `db_version` varchar(10) NOT NULL,
  `db_option` text,
  `used_yn` varchar(1) NOT NULL,
  `cycle` varchar(30) NOT NULL,
  `expire_time` int(11) NOT NULL,
  `compress` varchar(10) DEFAULT NULL,
  `backup_unit` varchar(10) NOT NULL DEFAULT 'DB',
  `backup_path` varchar(500) NOT NULL,
  `create_dttm` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`uid`),
  KEY `backup_manager_schedule_IDX03` (`db_ip`),
  KEY `backup_manager_schedule_IDX01` (`server_id`),
  KEY `backup_manager_schedule_IDX02` (`hostname`)
) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8;

Updated: