안녕하세요 깐지꾼지 파파 입니다.
정말 오랜만에 기술블로그를 작성하네요!
각설하고! 바로 본론으로 들어가도록 하겠습니다.
오늘은 리눅스에서 MySql DB 백업을 하기 위한 Shell 스크립트를 공유하도록 하겠습니다.
잘 짠 쉘은 아니지만.. 복붙 해서 사용할 수 있도록 신경 써서 만들었습니다!
[Shell Script]
해당 스크립트는 CenstOS 7.8 에서 작성하였습니다.
#!/bin/sh
PATH=/usr/bin:/bin
NAS="백업 경로"
DIV="구분"
TODAY=$(date +%Y-%m-%d)
YEAR=$(date "+%Y")
MONTH=$(date "+%m")
DAY=$(date "+%d")
#fixed value
LOG="mysql-script-backup-$(date +%Y-%m-%d-%H-%M).log"
sql_zip_file_name="offline-mysql-$(date +%Y-%m-%d-%H-%M).sql.gz"
db_user='데이터베이스 계정'
db_password='패스워드'
HOST='데이터베이스 위치'
TARGET_LIST="$NAS"
for TARGET in $TARGET_LIST
do
TARGET=$TARGET/$DIV/$YEAR/$MONTH
if [ ! -d $TARGET ] ;
then
sudo mkdir -p $TARGET
sleep 1;
sudo chgrp -R backup $TARGET
sleep 1;
sudo chmod -R 770 $TARGET
sleep 1;
echo "echo > create nas backup forder => $TARGET"
fi
sudo mysqldump --routines --host $HOST -u$db_user -p$db_password --all-databases --events --routines --single-transaction | sudo gzip -9 > $TARGET/$sql_zip_file_name
sleep 1;
#echo "Backing up DB to " $sql_zip_file_name >> $TARGET/$LOG
sleep 1;
sudo chgrp -R backup $TARGET
sleep 1;
sudo chmod 770 -R $TARGET
sleep 1;
echo "backup success $TARGET"
done
흐름 간략하게 설명드리겠습니다. 고정 값에 대한 설명과 중요하지 않은 부분은 생략하도록 하겠습니다.
5 ~ 10 : dump 파일이 업로드되는 위치 (백업 위치)
16 ~ 17 : DB 계정 설정, inline에 설정할 경우 Warning, 변수 처리 하였습니다.
20 ~ 53 :
* 파일을 저장할 위치 + 년 + 월 형식으로 최종 디렉터리를 생성
* 해당 위치에 티렉토리가 없으면 생성 및 그륩 접근 권한 backup 그륩(해당 그룹은 backup 전용 계정을 만들어서 생긴 그륩입니다.)
* mysqldump 명령어를 이용하여 전체 데이터베이스 백업(부분 백업이 필요한 경우 아래 명령어를 이용하세요)
* sudo mysqldump --routines --host $HOST -u$db_user -p$db_password --databases [지정 데이터베이스] --routines --single-transaction | sudo gzip -9 > $TARGET/$sql_zip_file_name
* 백업 완료 후 해당 경로에 생긴 파일에 대한 접근 권한을 지정합니다. chgrp, chmod 명령어 사용
* 백업 실패에 대한 처리는 하지 않았습니다. (실패하여 dump 파일을 생성하지 못했다면 뒤에 명령어는 의미 없기 때문입니다.)
해당 스크립은 본인 환경에 맞게 변형하여 사용하지면 되겠습니다.
감사합니다.!
'운영체제 이야기 > Linux(CentOS)' 카테고리의 다른 글
[CentOS7] 자바(JAVA) 배포 초간단 minimal 스크립트(git, gradle 사용) (0) | 2023.07.14 |
---|---|
[CentOS7] vi, VI 단축키 모음(펌) (0) | 2023.06.19 |
[CentOS7] 읽고 쓰고 실행 (1) | 2022.06.03 |
[CentOS7] grep 명령어 사용 (0) | 2022.06.02 |
[CentOS7] CentOS 7 넥서스 레포지토리 구축하기(nexus repository) (0) | 2022.04.20 |
댓글