리눅스 MYSQL(MariaDB) BACKUP 하기
CentOS Linux release 7.2 사용중
매일 새벽 동작 하게 하기 위해 크론탭을 사용
crontab -e 작성
crontab -l 확인
* * * * *
분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)
vi와 동일하게 작업이 가능합니다 :wq 저장하면 됩니다.
간단하게 하실분은 crontab에 바로 덥프를 작성하면 됩니다.
참조 :
10 2 1 * * /usr/local/mariadb/bin/mysqldump -u'유저아이디' -p'비밀번호'
--single-transaction '데이터베이스' > "디렉토리및 파일 이름.sql"
간단하게 dump backup을 할수있지만 .bash 작성해서 작업하였습니다.
#! /usr/bin/env bash
set -e
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
DATE_YESTERDAY=$(date '+%Y-%m-%d' -d yesterday)
DATE=$(date '+%Y-%m-%d')
DB="데이터베이스이름1 데이터베이스2 "
BACKUP_YESTERDAY_DIR="/data/backup/${DATE_YESTERDAY}" #backup 폴더 위치
BACKUP_TODAY_DIR="/data/backup/TODAY" #backup 폴더 위치
backpass=BackUp!@34 #폴더 .gz 압축파일 비밀번
# 디렉터리 생성
if [ ! -d "${BACKUP_TODAY_DIR}" ];then
mkdir -p "${BACKUP_TODAY_DIR}"
fi
TODAY_MOD_DATE=$(stat -c %y "${BACKUP_TODAY_DIR}" | awk '{ print $1 }')
# 디렉터리 생성 , 이동
if [ "${TODAY_MOD_DATE}" != "${DATE}" ];then
mv "${BACKUP_TODAY_DIR}" "${BACKUP_YESTERDAY_DIR}"
mkdir -p "${BACKUP_TODAY_DIR}"
else
echo "Backup is failed! Backup directory cannot be made." > /data/backup/BACKUP_FAILED
exit 1
fi
echo "====================================="
# DB에있는 데이터베이스 전체 반복
# mysqldump
for db in ${DB}
do
echo "------------------------------"
date
echo ${db}
/usr/local/mariadb/bin/mysqldump -uroot -p'password' --single-transaction ${db} > "${BACKUP_TODAY_DIR}/${db}_${DATE}.sql"
sleep 10
echo "------------------------------"
done
echo "====================================="
# 압축 및 삭제
for db in ${DB}
do
gzip -c "${BACKUP_TODAY_DIR}/${db}_${DATE}.sql" > "${BACKUP_TODAY_DIR}/${db}_${DATE}.sql.gz"
sleep 300
rm -f "${BACKUP_TODAY_DIR}/${db}_${DATE}.sql"
done
# sshpass란 다른 컴퓨터에 바로 ssh 연결을 할 수 있고, 연결된 컴퓨터에서 명령어를 실행할 수 있는 기능
# sshpass -p 'ssh접속비밀번호' ssh 'ssh접속계정'@'ssh접속주소' '명령어'
sshpass -p$backpass scp -r /data/backup/TODAY backupuser@172.16.1.66:/data/backup/
# 오래된 파일 삭제
find /data/backup -maxdepth 1 -type d -regextype posix-extended -regex '.*[0-9]{4}-[0-9]{2}-[0-9]{2}.*' -mtime +7 -exec rm -rf {} \;
crontab
10 0 * * * /data/backup/mysql_dump.bash >> /data/backup/mysql_dump.log 2>&1
궁금한 점이나 문의사항있으시면 댓글 부탁드립니다 ~ ^^
'공부 > Linux' 카테고리의 다른 글
CentOS7 Java1.8 -> Java11 버전 변경 (0) | 2024.02.26 |
---|---|
Red Hat MariaDB 설치 (0) | 2024.02.19 |
리눅스 vi /vim 단축키 (0) | 2015.12.10 |
리눅스 디렉터리 (0) | 2015.12.10 |
[Linux] 리눅스 디렉토리 구조를 살펴보자 (0) | 2015.12.10 |