리눅스 mysql 8버전 백업스크립트 만들기, 자동 백업 파일생성 방법
mysql 5.5, 6버전에서는 백업 방법이 정해져있었다.
1. mysql 계정 backup 생성 (root계정은 crontab 등록 시 스크립트에서 적용x) -> mysql 접속
create user 'backup'@'localhost' identified by '계정이름';
grant all privileges on *.* to 'backup'@'localhost'; //백업계정생성
flush privileges;
2. login-path 설정 (계정 노출시키지 않기 위함) -> /var/lib/mysql/bin 경로에서
./mysql_config_editor set --login-path=backup --host=localhost --user=backup --password
3. script 755권한 설정 및 crontab 등록
chmod 755 backup_script.sh (실행파일로 변경)
crontab –e (crontab 설정)
아래 입력 후 저장
0 1 * * * /home/backup_script.sh
이렇게 완료했으면 됐다. 하지만 8버전에서는 조금다르다.
원하는 경로에 backup 폴더를 만들어준다.
나는 home아래에 만들었다.
mkdir backup
cd backup
nano backup_script.sh
nano 명령어로 backup 스크립트를 만들어 주었다.
DB_USER="계정"
DB_PASS="비밀번호"
DB_NAME="데이터베이스이름"
BACKUP_DIR="/home/backup"
DATE=$(date +"%Y-%m-%d")
mysqldump --user=$DB_USER --password=$DB_PASS $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql
gzip $BACKUP_DIR/$DB_NAME-$DATE.sql
find $BACKUP_DIR -type f -name "*.gz" -mtime +365 -delete
한줄씩 설명하자면
DB_USER="계정"
리눅스 계정이름을 적어준다. 나는 root로 적었다.
DB_PASS="비밀번호"
DB비밀번호를 적어준다.
DB_NAME="데이터베이스이름"
백업할 데이터 배이스 이름을 적어준다.
BACKUP_DIR="/home/backup"
백업할 경로를 적어준다.
DATE=$(date +"%Y-%m-%d")
날짜를 표시할때 년,월,일까지 적히도록 하였다.
mysqldump --user=$DB_USER --password=$DB_PASS $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql
실행명령어이다.
gzip $BACKUP_DIR/$DB_NAME-$DATE.sql
gzip파일로 압축한다.
find $BACKUP_DIR -type f -name "*.gz" -mtime +365 -delete
365일이 지나면 gz파일이 삭제되도록 하였다. (1년보관)
위의내용을 입력하고 난후에 nano 편집기를 종료한다. ctrl+x
chmod+x backup_script.sh
명령어로 오류가 발생하는지 확인한다. 아무것도 뜨지않는다면 ok
ls명령어로 백업파일이 생성되었는지 확인!
스케쥴러적용하기
crontab -e
0 1 * * * /home/backup_script.sh
매일 1시에 백업할수있도록 하였다.
경로는 개발환경에따라 바꿀수 있다.