mysql数据备份脚本

#!/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")

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容