#!/bin/bash
####################################
tool=mysqldump
username="root" #数据库账号
password="123456"#数据库密码
port="3306"#数据库端口
#是否采用--all-databases备份所有数据库,是填写Y,否填其他
bak_all=Y
#将要备份的数据库,填写将要备份的数据库名,和上个参数二选一
database_arr=('mysql' 'ceshi')
time=`date +%Y%m%d%H%M%S`
mkdir -p {/data/script,/data/backup/mysql}
backup_dir="$BASE_DIR/$(date +'%Y%m%d')"
log_file="/data/script/info.log"
days=7 #备份数据保留时间
if [ ! -d $backup_dir/mysqlbak_$time ];
then
mkdir -p $backup_dir/mysqlbak_$time;
fi
if [ $bak_all == "Y" ];
then
$tool -u$username -p$password -P$port --master-data \
--quick \
--max-allowed-packet=100M \
--extended-insert \
--set-gtid-purged=OFF \
--default-character-set=utf8 \
--single-transaction \
-all-databases \
|gzip \
> $backup_dir/mysqlbak_$time/mysqlbak_all_$time.sql.gz;
else
i=0
while [ $i -lt "${#database_arr[*]}" ]
do
database=${database_arr[$i]}
$tool -u$username -p$password -P$port --master-data \
--quick \
--max-allowed-packet=100M \
--extended-insert \
--set-gtid-purged=OFF \
--default-character-set=utf8 \
--single-transaction \
-all-databases \
$database \
|gzip \
>$backup_dir/mysqlbak_$time/mysqlbak_${database}_${time}.sql.gz;
let i+=1
done
fi
#删除7天前的备份
find $backup_dir -maxdepth 1 -type d -mtime +$days -name 'mysqlbak*' -exec rm -rf {} \;
####################################
文章标红处可按自己实际情况进行替换。