自动备份全服数据库shell脚本

工作需要写了一个自动备份全服数据库shell脚本,有需要的朋友可以复制下面这段代码:

#!/usr/bin/env bash
echo "========================================================"
echo "自动备份任务"
currentDate=$(date +%Y%m%d%H%M)
echo "备份任务执行时间:"$currentDate

echo "--------------------------------------------------------"

echo "任务开始"

echo "--------------------------------------------------------"

#导出目录
dbExportDir="/wwwroot/dbExport"
#备份目录
dbBackupDir="/wwwroot/dbBackup"
dbBackupZip=$dbBackupDir/$currentDate".zip"

echo "开始创建导出目录"
currentDbExportDir=$dbExportDir/$currentDate
mkdir -p $currentDbExportDir
echo "导出目录创建完成,目录路径为:"$currentDbExportDir

echo "--------------------------------------------------------"

echo "开始获取需要备份的数据库"

#数据库ip或域名
DBIP="localhost"

#数据库端口
DBPORT="3306"

#数据库登陆用户名
DBUSERNAME="username"
#数据库登陆密码
DBPASSWORD="password"
databaseList=`mysql -h$DBIP -P$DBPORT -u$DBUSERNAME -p$DBPASSWORD -e'show databases;' | grep -Ev 'Database|performance_schema|information_schema|mysql|sys'`
echo "需要备份的数据库获取完成,需要备份的数据库为:"$databaseList

#需要忽略的表名,如log表
igoreTables="log"
echo "导出数据库将忽略以下表:"$igoreTables

igoreTablesCheck(){
checkDatabase="$1"
igoreCheck=`mysql -h$DBIP -P$DBPORT -u$DBUSERNAME -p$DBPASSWORD -e'use '$checkDatabase';show tables;' | grep -Ex $igoreTables`
echo $igoreCheck
}

igoreTablesOptionsCreate(){
igoreTablesList=$1
igoreTablesOption=""
for igoreTable in $igoreTablesList;do
igoreTableOption=$igoreTableOption" --ignore-table=$eachDatabase.$igoreTable"
done;
echo $igoreTableOption
}

for eachDatabase in $databaseList;do 
echo "开始备份数据库:"$eachDatabase

igoreTablesList=`igoreTablesCheck $eachDatabase`
igoreTablesOptions=""

if [ -n "$igoreTablesList" ]
then
echo "备份数据将忽略当前数据库表:"$igoreTablesList
igoreTablesOptions=`igoreTablesOptionsCreate $igoreTablesList`
echo $igoreTablesOptions
fi

mysqldump $igoreTablesOptions --default-character-set=utf8 --max-allowed-packet=256M --compact --extended-insert=false --add-drop-table -C -h$DBIP -P$DBPORT -u$DBUSERNAME -p$DBPASSWORD $eachDatabase > $currentDbExportDir/$eachDatabase".sql"

done;

echo "--------------------------------------------------------"

echo "开始创建备份目录"
mkdir -p $dbBackupDir
echo "备份目录创建完成,目录路径为:"$dbBackupDir

echo "--------------------------------------------------------"

echo "开始创建备份压缩文件"
zip -j $dbBackupZip $currentDbExportDir/*
echo  "备份压缩文件创建完成,文件路径为:"$dbBackupZip

echo "--------------------------------------------------------"

echo "开始删除本次导出目录及文件"
rm -rf $currentDbExportDir
echo "导出目录及文件文件删除完成"

echo "--------------------------------------------------------"

echo "任务完成"

echo "========================================================"


修改部分信息后就可以使用了。

建议配合系统计划任务运行:

0 0 * * * sh /wwwroot/backup.sh >> /wwwroot/backup.log

backup.sh是上面那段shell,backup.log是备份过程中的输出。

顺便说一下,这个脚本运行前要求必须安装zip,没有安装的先安装哦,否则没法压缩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值