zabbix 服务器mysql 数据库自动备份,自动打包,自动删除7天前的包文件。

#!/bin/bash

#1.数据库信息定义
mysql_host=”127.0.0.1″
mysql_user=”zabbix”
mysql_passwd=”zabbix”

#sql备份目录
root_dir=”/backup”
back_dir=”/backup/databases”
back1_dir=”/backup/database_back”
data_dir=”databases”
store_dir=”database_back”

#日记文件路径
LOGFILE=”/backup/database_back/zabbix_data_backup.log”

if [ ! -d $back_dir ]; then
mkdir -p $back_dir

fi

if [ ! -d $back1_dir ]; then
mkdir -p $back1_dir

fi

#备份的数据库数组
db_arr=$(echo “show databases;” | mysql -u$mysql_user -p$mysql_passwd -h$mysql_host)
#不需要备份的单例数据库
nodeldb=”Database”
nodeldb1=”test”
nodeldb2=”information_schema”
#当前日期
date=$(date -d ‘+0 days’ +%Y%m%d)

#zip打包密码
#zippasswd=”passwd”
zipname=”zabbix”$date”.tgz”

#2.进入到备份目录
cd $back_dir
#开始备份之前,将备份信息头写入日记文件
echo ” ” >> $LOGFILE
echo ” ” >> $LOGFILE
echo “———————————————–” >> $LOGFILE
echo “BACKUP DATE:” $(date +”%y-%m-%d %H:%M:%S”) >> $LOGFILE
echo “———————————————– ” >> $LOGFILE

#3.循环备份
for dbname in ${db_arr}
do
if [ $dbname != $nodeldb -a $dbname != $nodeldb1 -a $dbname != $nodeldb2 ];

then

sqlfile=$dbname-$date”.sql”
mysqldump -u$mysql_user -p$mysql_passwd -h$mysql_host $dbname –skip-lock-tables>$sqlfile
fi

done
#4.tar打包所有的sql文件
tar -zcPpf $root_dir/$store_dir/$zipname /$root_dir/$data_dir
#判断数据库备份是否成功
if [ $? = 0 ]; then

#输入备份成功的消息到日记文件

echo “[$zipname] Backup Successful!” >> $LOGFILE
#删除原始备份文件,只需保 留数据库备份文件的压缩包即可
rm -r $back_dir

else
echo “Database Backup Fail!” >> $LOGFILE
fi
find $back1_dir -mtime +7 -name “*.zip” -exec rm -rf {} \;

 

Leave a Reply

Your email address will not be published. Required fields are marked *