mysqldum全库数据压备通用脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysqldum全库数据压备通用脚本相关的知识,希望对你有一定的参考价值。

   随着业务的不断增长,在mysqld上的数据势必会越来越多,那么只有备份单个库的备份脚本就不再适用实际的生产环境,因此就对以前写的备份脚本重新写了下(http://jim123.blog.51cto.com/4763600/1846301),当然因为数据量的增大,磁盘空间也要节约使用,那么就可以通过压缩效率极高bzip2来对备份的数据进行进一步的压缩数据,当然如果系统中没有bzip2的话,需要安装,这个安装可以通过rpm的前端工具yum或者apt-get等安装或者是直接安装源码包都可以,这个比较简单在这里就不再做过多的赘述了,脚本如下:

#!/bin/bash
#master_dbbak.sh version3.0 chmod 700
#2016_11_19 jim
#00 04 * * * /usr/local/scripts/master_dbbak.sh
export datetime=`date +"%Y%m%d"`
base_bindir="/usr/local/mysql/bin"
mysql_socket="/tmp/mysql.sock"
mysql_password="youpassword"

datadir="`$base_bindir/mysql -S $mysql_socket -p$mysql_password -Bse "show variables like ‘datadir‘;" |awk ‘{print $2}‘`"
mysql_backup="/data/backup/mysql_backup"
masterbakdir="$mysql_backup/masterbakdir"
backup_log="$masterbakdir/logs"
########################设定要备份的库################################
exclude="information_schema|performance_schema|mysql|Database"
all_databases=`mysql -e "show databases;"|grep -Ev "$exclude"`

if [ ! -e "$backup_log/"$datetime"" ];then
        mkdir -p $backup_log/"$datetime"
fi

#########################记录主库库状态#################################
$base_bindir/mysql -S $mysql_socket -p$mysql_password -e "select now();show master status\G" |tee -a $backup_log/"$datetime"/masterstat_${datetime}.log
###########################开始备份#####################################
echo "============================ start mysqldump `date`" | tee -a $backup_log/"$datetime"/masterstat_${datetime}.log
for i in $all_databases
do
    $base_bindir/mysqldump --allow-keywords -S $mysql_socket -p$mysql_password -R --add-locks --opt $i > $masterbakdir/$i-$datetime.sql
done

if [ $? -eq 0  ]
       then
                echo "`date` databases backup success" |tee -a $backup_log/"$datetime"/masterstat_${datetime}.log
        else
                echo "`date` databases backup fail" |tee -a $backup_log/"$datetime"/masterstat_${datetime}.log
fi
echo "============================ end mysqldump `date +"%Y-%m-%d %H:%M:%S"`"|tee -a $backup_log/"$datetime"/masterstat_${datetime}.log
#########################进行数据压缩#######################################
/usr/bin/bzip2 -z $masterbakdir/*.sql
####################删除7天前的备份数据及30天前的一切日志数据###############
find $masterbakdir -type f -ctime +7 -name "*.bz2" -exec rm -vf {} \; >> $backup_log/free-${datetime}.log
find $backup_log -type f -ctime +7 -name "free-*" -exec rm -vf {} \;
find $backup_log -type d -ctime +30 -name "*" -exec rm -vrf {} \;


本文出自 “技术随笔” 博客,谢绝转载!

以上是关于mysqldum全库数据压备通用脚本的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse 中的通用代码片段或模板

oracle 数据库备份脚本(数据泵1-全库)

mysql全库备份/增量备份脚本

通过脚本片段绕过XSS防御

shell脚本之全库冷备份

shell脚本之全库热备份