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