서론
교육 중 다른 반의 MySQL을 담당하게 됐는데 MySQL데이터 관리를 위해서 자동백업을 구축했던 과정을 기록하고자 한다.
본 내용은 VMware 가상머신에 ubuntu를 설치한 후 설치한 MySQL 백업에 대한 내용이다.
백업 담당할 유저를 생성
root로도 가능하지만 일반적으로 권한을 최소한으로 설정한 백업 담당 유저를 만드는 것이 보안상 더 좋다.
# backupuser 라는 이름으로 유저를 생성한다.
CREATE USER 'backupuser'@'localhost' IDENTIFIED BY 'backupuser';
# 그리고 backupuser 에게 team1~team4 라는 이름의 데이터베이스 대한 권한을 준다.
GRANT SELECT, LOCK TABLES, SHOW VIEW ON team1.* TO 'backupuser'@'localhost';
GRANT SELECT, LOCK TABLES, SHOW VIEW ON team2.* TO 'backupuser'@'localhost';
GRANT SELECT, LOCK TABLES, SHOW VIEW ON team3.* TO 'backupuser'@'localhost';
GRANT SELECT, LOCK TABLES, SHOW VIEW ON team4.* TO 'backupuser'@'localhost';
# 권한 적용을 위한 필수 명령어! 꼭 잊지말자
flush privileges;
자동 DB 백업 구축하기
자동 DB 백업을 위한 Shell Script 작성
#!/bin/bash
# MySQL 백업 스크립트
# 홈 디렉토리에 backup 폴더 만들어서 진행할 것
BACKUP_DIR="/$HOME/backup"
# MySQL 사용자 정보 설정
DB_USER="backupuser"
DB_PASS="backupuser"
# 각 데이터베이스에 대한 백업 실행
mysqldump -u $DB_USER -p$DB_PASS team1 > $BACKUP_DIR/team1_$(date +%Y-%m-%d).sql
mysqldump -u $DB_USER -p$DB_PASS team2 > $BACKUP_DIR/team2_$(date +%Y-%m-%d).sql
mysqldump -u $DB_USER -p$DB_PASS team3 > $BACKUP_DIR/team3_$(date +%Y-%m-%d).sql
mysqldump -u $DB_USER -p$DB_PASS team4 > $BACKUP_DIR/team4_$(date +%Y-%m-%d).sql
이후 본 파일이 실행가능하도록 하기 위해서 권한을 부여하자
chmod +x backup_script.sh
서버 시간 설정하기
초기 리눅스 서버는 우리나라 시간과 다르기 때문에 이를 맞추는 작업이 필요하다.
#서버시간을 먼저 확인
date
#타임존 설정하기 (우리나라)
sudo timedatectl set-timezone Asia/Seoul
Cron 작업
매주 금요일 18시에 백업을 가정하여, cron 작업을 설정해 주자.
터미널에서 crontab -e 명령을 사용하여 cron 작업을 편집할 수 있습니다.
0 18 * * 5 sh /$HOME/backup/backup_script.sh
경로는 위에서 만든 Shell Script 경로를 지정해 주면 된다.
이후 Cron 재실행을 해줘야 Cron이 적용이 된다.
Cron 관련 명령어는 다음과 같으니 참고하면 된다.
// 크론탭 시작
service cron start
// 크론탭 중지
service cron stop
// 작동확인
service cron status
// 크론탭 재 실행 (2가지 방법)
service cron restart
service crond restart