#!/bin/bash
echo '##########################################'
echo '###### The database is automatically backed up at 01:00 am every day ######'
echo '##########################################'
# Setting environment variables
DATE=$(date +%Y_%m_%d_%H_%M_%S)
# $(date +%Y%m%d)
# 数据库用户名
USERNAME=root
# 密码
PASSWORD=1qaz!QAZ
# 要备份的数据库
DBA=数据库名称
DBB=数据库名称
DBC=数据库名称
DBD=数据库名称
DBE=数据库名称
DBF=数据库名称
DBG=数据库名称
DBH=数据库名称
DBQ=数据库名称
DBJ=数据库名称
DBY=数据库名称
DBZ=数据库名称
DBV=数据库名称
DBS=数据库名称
DBL=数据库名称
# Docker容器ID
DOCKERID=容器ID
#DB1=xxxx
# ubuntu 系统非 root 用户,要将备份产生的文件放到 xxx 用户所在的目录下,否则必须使用 sudo 输入管理员密码执行此脚本。
# Linux服务器上备份文件目录。
DIR=/data1/data_backup
echo 'Get system date: ' $DATE
if [ ! -d "$DIR" ]; then
mkdir $DIR
fi
cd $DIR
echo 'backup started...' $(date "+%Y-%m-%d %H:%M:%S")
# 备份 docker 容器中的数据库
# docker exec -it 容器名称 mysqldump -u用户名 -p密码 要备份的数据库名称 | gzip > 要打包到的文件名称
# docker exec -it c7f1b671c57f mysqldump -u$USERNAME -p$PASSWORD $DB > /root/data_backup/database_name_$DATE.sql
# docker exec -it c7f1b671c57f mysqldump -uroot -proot favorites | gzip > /root/data_backup/database_name_2021_05_07.sql.gz
# 最关键的备份语句
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBA | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBB | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBC | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBD | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBE | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBF | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBG | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBH | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBQ | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBJ | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBY | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBZ | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBV | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBS | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DBL | gzip > /data1/data_backup/数据库名称_$DATE.sql.gz
# 备份 直接安装在 linux 系统中的数据库
# /usr/bin/mysqldump -u$USERNAME -p$PASSWORD $DB2 | gzip > xxx_$DATE.sql.gz
# just backup the latest 7 days
# find ${DIR} -name "database_name_*.sql.gz" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1
# find ${DIR} -name "database_name_*.sql.gz" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1
#保留最近文件数5,删除其它多余的文件。
ReservedNum=46
date=$(date "+%Y%m%d-%H%M%S")
FileNum=$(ls -l $DIR|grep ^- |wc -l)
while(( $FileNum > $ReservedNum))
do
OldFile=$(ls -rt $DIR| head -1)
echo $date "Delete File:"$OldFile
rm -rf $DIR/$OldFile
let "FileNum--"
done
echo 'backup completed!' $(date "+%Y-%m-%d %H:%M:%S")