shell腳本備份mysql數據庫 需求 臨近年關整理一些腳本程序,發現一個mysql數據庫備份的腳本可以和大家分享一下,基於環境是ubuntu10.04server www.2cto.com 思路 獲取mysql服務器所有數據庫名稱,過濾掉不需要備份的數據庫 通過mysqldump來for循環導出所有的數據庫的sql文件 用zip加密壓縮所有的sql文件 定期進行數據清理工作 shell代碼 數據庫導出代碼 [html] #!/bin/bash #1.數據庫信息定義 www.2cto.com 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) #過期文件的時間 www.2cto.com 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 執行清理腳本 後記 www.2cto.com 大家有更好的數據庫備份方法或者是指點我shell腳本的不足,都可以跟帖留言,我保證回復,一起加油!