參考1:MySQL定時(shí)備份數(shù)據(jù)庫(全庫備份)
?? ?? 參考網(wǎng)站中的備份多個(gè)數(shù)據(jù)庫的話,需要啟動使用多個(gè)shell腳本文件,我嫌麻煩就修改了下,一個(gè)腳本中可以備份多個(gè)數(shù)據(jù)庫。
#!/bin/bash
#保存?zhèn)浞輦€(gè)數(shù)泌绣,備份31天數(shù)據(jù)
number=31
#備份保存路徑
backup_dir=/data/backupfile/mysqlBackup
#日期
dd=`date +%Y%m%d`
minute=`date +%H%M`
#備份工具
tool=mysqldump
#用戶名
username=root
#密碼
password=root
#將要備份的數(shù)據(jù)庫
database_names1="testdatabase1,testdatabase2"
database_names2="testdatabase3,testdatabase4"
function backupMysql(){
OLD_IFS="$IFS"
IFS=","
#代表第一個(gè)參數(shù)
arr=($1)
IFS="$OLD_IFS"
for database_name in ${arr[@]}
do
echo $database_name 'start backup....'
#如果文件夾不存在則創(chuàng)建
if [ ! -d $backup_dir/$database_name/$dd ];
then
mkdir -p $backup_dir/$database_name/$dd/;
fi
#簡單寫法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
$tool -u $username -p$password $database_name > $backup_dir/$database_name/$dd/$database_name-$dd-$minute.sql
#寫創(chuàng)建備份日志
echo "`date +%Y-%m-%d` `date +%H`:`date +%M` create $backup_dir/$database_name/$database_name-$dd.dupm" >> $backup_dir/$database_name/log.txt
#找出需要?jiǎng)h除的備份
delfile=`ls -l $backup_dir/$database_name/ | grep ^d | awk '{print $9 }' | head -1`
#判斷現(xiàn)在的備份數(shù)量是否大于$number
count=`ls -l $backup_dir/$database_name/ | grep ^d | awk '{print $9 }' | wc -l`
if [ $count -gt $number ]
then
#刪除最早生成的備份述暂,只保留number數(shù)量的備份
rm -rf $backup_dir/$database_name/$delfile
#寫刪除文件日志
echo "`date +%Y-%m-%d` `date +%H`:`date +%M` delete $backup_dir/$database_name/$delfile" >> $backup_dir/$database_name/log.txt
fi
echo $database_name 'end backup....'
done
}
backupMysql $database_names1;
backupMysql $database_names2;
如上代碼主要含義如下:
1.首先設(shè)置各項(xiàng)參數(shù),例如number最多需要備份的數(shù)目责球,備份路徑焦履,用戶名,密碼等雏逾。
2.執(zhí)行mysqldump命令保存?zhèn)浞菸募慰悖⒉僮鞔蛴≈镣夸浵碌膌og.txt中標(biāo)記操作日志。
3.定義需要?jiǎng)h除的文件:通過ls命令篩選出文件夾并獲取第九列栖博,即文件名列屑宠,再通過 head -1 實(shí)現(xiàn)定義操作時(shí)間最晚的那個(gè)需要?jiǎng)h除的文件。
4.定義備份數(shù)量:通過ls命令篩選出文件夾同時(shí)加上 wc -l 統(tǒng)計(jì)文件夾中備份了多少天
5.如果文件超出定義的時(shí)間仇让,就刪除最早創(chuàng)建的sql文件
- 1.shell中要調(diào)用function函數(shù),必須使在函數(shù)的后面,在前面則調(diào)用無效典奉。
- 2.在windows中如果不是保存成unix腳本格式,linux中則須進(jìn)行DOS轉(zhuǎn)UNIX
- 3.使用vim進(jìn)行格式轉(zhuǎn)換
DOS轉(zhuǎn)UNIX
:setfileformat=unix 或 :set ff=unix
UNIX轉(zhuǎn)DOS
:setfileformat=dos 或 :set ff=dos
保存
:wq
- 4.文件必須具有可執(zhí)行權(quán)限
chmod +x mysqlBackup.sh