셸 스 크 립 트 는 MySQL 데이터베이스 데 이 터 를 정기 적 으로 백업 하고 지정 한 시간 을 유지 합 니 다.
같은 백업 스 크 립 트 는 생산 환경 MySQL 데이터베이스 정시 백업 에 도 사용 할 수 있 습 니 다.
환경:CentOS 7.5/MySQL 5.7
#!/bin/sh
#
DB_USER="root"
DB_PWD="root"
DB_HOST="127.0.0.1"
DB_PORT="3306"
# MYSQL
MYSQL_DIR="/home/mysql"
#
BAK_DIR="/home/db_backup"
# , 20200902
DATE=`date +%Y%m%d`
#
DEL_DAY=7
# ,
DATABASES=("apolloconfigdb" "apolloportaldb" "apolloconfigdb-uat" "frame-assistor" "frame-authorization" )
#
mkdir $BAK_DIR/$DATE
echo "-------------------$(date +%F_%T) start ---------------" >>${BAK_DIR}/db_backup.log
for database in "${DATABASES[@]}"
do
#
$MYSQL_DIR/bin/mysqldump --opt -u$DB_USER -p$DB_PWD -h$DB_HOST -P$DB_PORT ${database} > $BAK_DIR/$DATE/${database}.sql
done
echo "--- backup file created: $BAK_DIR/db_backup_$DATE.tar.gz" >>${BAK_DIR}/db_backup.log
# sql db_backup_yyyyMMdd.tar.gz
tar -czf $BAK_DIR/db_backup_$DATE.tar.gz $BAK_DIR/$DATE
# ,
rm -f $BAK_DIR/$DATE/*
rmdir $BAK_DIR/$DATE
#
LIST=$(ls ${BAK_DIR}/db_backup_*)
# ,
SECONDS=$(date -d "$(date +%F) -${DEL_DAY} days" +%s)
for index in ${LIST}
do
# , , 20200902
timeString=$(echo ${index} | egrep -o "?[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]")
if [ -n "$timeString" ]
then
indexDate=${timeString//./-}
indexSecond=$( date -d ${indexDate} +%s )
# , 7
if [ $(( $SECONDS- $indexSecond )) -gt 0 ]
then
rm -f $index
echo "---- deleted old backup file : $index " >>${BAK_DIR}/db_backup.log
fi
fi
done
echo "-------------------$(date +%F_%T) end ---------------" >>${BAK_DIR}/db_backup.log
backupDB.sh 스 크 립 트 로 저장 한 후 스 크 립 트 검증 을 실행 합 니 다.BAK 보기DIR 백업 디 렉 터 리 의 dbbackup.log 는 백업 의 실행 상황 을 볼 수 있 습 니 다.-------------------2020-09-02_21:33:01 start ---------------
--- backup file created: /home/db_backup/db_backup_20200902.tar.gz
-------------------2020-09-02_21:33:18 end ---------------
인증 에 문제 가 없 으 면 crontab-e 를 통 해 정시 작업 으로 설정 하여 실행 합 니 다.주의해 야 할 것 은 my sqldump 백업 이 실 행 될 때 시 계 를 잠 그 는 것 입 니 다.새벽 에 아무 도 데이터 베 이 스 를 조작 하지 않 을 때 백업 작업 을 수행 하 는 것 을 권장 합 니 다.
# 3
0 3 * * * sh /home/backupDB.sh > /dev/null 2>&1 &
주의:백업 시 잠 금 표를 원 하지 않 으 면 my sqldump 명령 에 인자--skip-lock-tables 를 추가 할 수 있 습 니 다.
위 스 크 립 트 에 백업 할 데이터 베 이 스 를 지정 하 였 습 니 다.모든 데이터 베 이 스 를 백업 하려 면 데이터 베 이 스 를 지정 하지 않 아 도 됩 니 다.my sqldump 명령 에 인자 인 all-databases 를 추가 하면 됩 니 다.
셸 스 크 립 트 가 MySQL 데이터베이스 데 이 터 를 정기 적 으로 백업 하고 지 정 된 시간 을 유지 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 셸 이 정기 적 으로 MySQL 을 백업 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 을 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.