mysql

리눅스 mysql 8버전 백업스크립트 만들기, 자동 백업 파일생성 방법

Gyona 2023. 8. 17. 15:17

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시에 백업할수있도록 하였다.

경로는 개발환경에따라  바꿀수 있다.