Home  >  Article  >  Database  >  shell脚本备份mysql数据库_MySQL

shell脚本备份mysql数据库_MySQL

WBOY
WBOYOriginal
2016-06-01 13:36:181128browse

bitsCN.com

shell脚本备份mysql数据库

 

需求

临近年关整理一些脚本程序,发现一个mysql数据库备份的脚本可以和大家分享一下,基于环境是ubuntu10.04server

思路

获取mysql服务器所有数据库名称,过滤掉不需要备份的数据库

通过mysqldump来for循环导出所有的数据库的sql文件

用zip加密压缩所有的sql文件

定期进行数据清理工作

 

shell代码

 

数据库导出代码

[html] 

#!/bin/bash  

  

#1.数据库信息定义      

mysql_host="192.168.1.1"  

mysql_user="root"  

mysql_passwd="root"  

  

#sql备份目录  

root_dir="/backup"  

back_dir="/backup/databases"  

data_dir="databases"  

store_dir="database"  

if [ ! -d $back_dir ]; then  

    mkdir -p $back_dir  

fi  

  

#备份的数据库数组  

db_arr=$(echo "show databases;" | mysql -u$mysql_user -p$mysql_passwd -h$mysql_host)  

#不需要备份的单例数据库  

nodeldb="test1"  

  

#当前日期  

date=$(date -d '+0 days' +%Y%m%d)  

  

#zip打包密码  

zippasswd="passwd"  

zipname="lczh_"$date".zip"  

  

#2.进入到备份目录  

cd $back_dir  

  

#3.循环备份  

for dbname in ${db_arr}  

do  

    if [ $dbname != $nodeldb ]; then  

        sqlfile=$dbname-$date".sql"  

        mysqldump -u$mysql_user -p$mysql_passwd -h$mysql_host $dbname >$sqlfile  

    fi  

done  

  

#4.tar打包所有的sql文件  

tar -zcPpf $root_dir/$store_dir/$zipname --directory /  $root_dir/$data_dir  

#打包成功后删除sql文件  

if [ $? = 0 ]; then  

    rm -r $data_dir  

fi  

 

数据定期清理脚本

 

作用

定期清理14天前的备份文件

 

shell代码

[html] 

#!/bin/bash -   

  

#1.参数配置  

  

#mysql文件备份目录  

backup_dir1="/backup/test1/"  

backup_dir2="/backup/test2/"  

backdir_arr=($backup_dir1 $backup_dir2)  

  

#过期文件的时间      

keep_time=14  

  

#当前所在星期,crontab在奇数的星期7执行  

week=$(date +%W)  

flag=`expr $week % 2`  

  

#2.清理过期文件,只在奇数星期7执行  

if [ $flag -eq 1 ]; then  

    for dir in ${backdir_arr[*]}  

    do  

        if [ -d $dir ]; then  

            #查找14天之外的文件数据  

            clean_arr=`find $dir -type f -mtime +$keep_time -exec ls {} /;`  

            for cleanfile in ${clean_arr}  

            do  

                rm $cleanfile  

            done  

        fi  

    done  

fi  

 

crontab配置

[html] 

0 5 * * 7  执行清理脚本  

 

后记    

大家有更好的数据库备份方法或者是指点我shell脚本的不足,都可以跟帖留言,我保证回复,一起加油!

 

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn