#!/bin/bash
#####################################################################
# MySQL Dump, 압축, 보존기간 지난 파일 삭제
#####################################################################
TODAY=$(date +"%Y%m%d") # 오늘날짜 저장
DELETE_DAY='3 day ago' # 백업보존기간
DELETE_DATE=$(date '+%Y%m%d' -d "$DELETE_DAY")
DELETE_DATE_SQL=$(date '+%Y%m%d' -d "$DELETE_DAY")
DELETE_DATE_LOG=$(date '+%Y%m%d' -d "$DELETE_DAY")
YOIL=$(date +"%a")
BASE_DIR=/data/samba/backup # 백업파일 기본디렉토리
TGZ_FILE=${BASE_DIR}/${TODAY}_dump.tgz # 압축파일명 선언
TGZ_SRC=${BASE_DIR}/${TODAY}_*.sql # 압축할 sql파일들
TGZ_FILE_DELETE=${BASE_DIR}/${DELETE_DATE}_dump.tgz
#MySQL데이타베이스 리스트 바인딩
DB_LIST=$(mysql --login-path=local -e 'show databases;' | awk '{print $1}' | tail -n+2 )
#MySQL 데이타베이스 for루프
for DB in $DB_LIST; do
#MySQL 기본 데이타베이스 제외 if문
if [ "$DB" != "information_schema" -a "$DB" != "mysql" -a "$DB" != "performance_schema" ]; then
# MySQL인증키를 만들어서 로그인함(MySQL 5.6.6)
# mysql_config_editor 키 생성&삭제 가능
mysqldump --login-path=local ${DB} > ${BASE_DIR}/${TODAY}_${DB}.sql
fi
done
#덤프한 sql파일 tar압축
tar cfzP ${TGZ_FILE} ${TGZ_SRC}
#tar압축후 sql파일 삭제
rm -rf ${TGZ_SRC}
#보존기간 넘은 tar파일 삭제
rm -rf ${TGZ_FILE_DELETE}
#####################################################################
# 백업파일(압축) FTPS서버 전송
#####################################################################
FTP_HOST="192.168.1.210:2646"
FTP_USER=admin
FTP_PASS=passwords
FTP_SOURCE=${TGZ_FILE}
FTP_TARGET_DIRECTORY="/mysql_backup"
FTP_LOGFILE="/root/ftp_backup.log"
lftp <<EOF
set ftp:ssl-auth TLS
set ftp:ssl-force true
set ftp:ssl-protect-list yes
set ftp:ssl-protect-data yes
set ssl:verify-certificate no
#FTP전송 로그파일 설정
set xfer:log true
set xfer:log-file ${FTP_LOGFILE}
connect $FTP_HOST
login ${FTP_USER} ${FTP_PASS}
cd ${FTP_TARGET_DIRECTORY}
put ${TGZ_FILE}
bye
EOF