1新建一個(gè)back.sh 腳本?
#!/bin/bash
id="root" #用戶名
pwd="vd123" #密碼
dbs="zhangdezhi" #數(shù)據(jù)庫(kù)名字的列表,多個(gè)數(shù)據(jù)庫(kù)用空格分開(kāi)
backuppath="/home/mysqlbackup" #保存?zhèn)浞莸奈恢?/p>
day=30? #保留最近幾天的備份
[ ! -d $backuppath ] &&mkdir -p $backuppath? #判斷備份目錄是否存在,不存時(shí)新建目錄。
cd $backuppath? #轉(zhuǎn)到備份目錄,這句話可以省略。可以直接將路徑到命令的也行。
backupname=mysql_$(date +%Y-%m-%d)? #生成備份文件的名字的前綴,不帶后綴。
for db in $dbs;? #dbs是一個(gè)數(shù)據(jù)名字的集合。遍歷所有的數(shù)據(jù)。
do
mysqldump? $db >$backupname_$db.sql? #備份單個(gè)數(shù)據(jù)為.sql文件。放到當(dāng)前位置
if [ "$?" == "0" ]? #$? 得到上一個(gè)shell命令的執(zhí)行的返回值。0表示執(zhí)行成功。其他表示錯(cuò)誤。并將將結(jié)果寫(xiě)入到日志中。
then
echo $(date +%Y-%m-%d)" $db? mysqldump sucess">>mysql.log
else
echo $(date +%Y-%m-%d)"? $db mysql dump failed">>mysql.log
exit 0
fi
done
tar -czf $backupname.tar.gz *.sql #壓縮所有sql文件
if [ "$?" == "0" ]
then
echo $(date +%Y-%m-%d)" tar sucess">>mysql.log
else
echo $(date +%Y-%m-%d)" tar failed">>mysql.log
exit 0
fi
rm -f *.sql? #刪除所有的sql文件
delname=mysql_$(date -d "$day day ago" +%Y-%m-%d).tar.gz? #得到要?jiǎng)h除的太舊的備份的名字。
rm -f $delname? #刪除文件。
2.給腳本執(zhí)行權(quán)限 否則會(huì)報(bào) Permission denied 錯(cuò)誤
3.在windows下編輯腳本傳到linux下會(huì)報(bào)bin/sh^M:badinterpreter:Nosuchfileordirectory 錯(cuò)誤
這是不同系統(tǒng)編碼格式引起的:在windows系統(tǒng)中編輯的.sh文件可能有不可見(jiàn)字符,所以在Linux系統(tǒng)下執(zhí)行會(huì)報(bào)以上異常信息
修改文件格式
#sh>vi filename
利用如下命令查看文件格式
:set ff 或 :set fileformat
可以看到如下信息
fileformat=dos 或 fileformat=unix
利用如下命令修改文件格式
:set ff=unix 或 :set fileformat=unix
:wq (存盤(pán)退出)
最后再執(zhí)行文件
4.數(shù)據(jù)庫(kù)報(bào)Warning: Using a password on the command line interface can be insecure.錯(cuò)誤

MySQL 5.6 在命令行輸入密碼,就會(huì)提示這些安全警告信息。
1、針對(duì) mysql
mysql -u root -pPASSWORD 改成 mysql -u root -p 再輸入密碼即可。
2、mysqldump 就比較麻煩了,通常都寫(xiě)在scripts腳本中。
vim /etc/mysql/my.cnf
[mysqldump]
user=your_backup_user_name
password=your_backup_password
修改完配置文件,重啟MyQL后,只需要執(zhí)行mysqldump腳本就可以了。備份腳本中不需要涉及用戶名密碼相關(guān)信息。