Linux Mysql 實(shí)現(xiàn)自動備份
郵箱選擇:mail 方式發(fā)送郵箱
郵箱應(yīng)用場景
很多時(shí)候我們在使用shell監(jiān)控腳本的時(shí)候(例如:Mysql,nginx芯勘,等等),當(dāng)監(jiān)控的服務(wù)出現(xiàn)問題的需要通過郵箱(當(dāng)然也可以使用微信窘茁、短信或者釘釘)通知給管理員妈嘹。
1.先判斷本身系統(tǒng)是否有mail
which mail?
1.1 系統(tǒng)沒有mail 安裝命令 (需要連接外網(wǎng))
yum install mailx -y
1.2 修改配置文件
vim? /etc/mail.rc
set smtp=smtps://smtp.163.com:465
set from=remake@163.com? 換成你自己的郵箱地址
set smtp-auth=login
set smtp-auth-user= remake@163.com? 換成你自己的郵箱地址?
set smtp-auth-password=yournumber? ?注意:你的授權(quán)碼,使用smtp需要打開授權(quán)
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/?
1.3 打開授權(quán)(163郵箱)
注意:別忘記你的授權(quán)碼坏瘩,只能看一次(記得保存)
把授權(quán)碼復(fù)制到 配置文件?set smtp-auth-password=yournumber? ?
1.4測試發(fā)送
echo "測試郵件" | mail -s "測試"? remake@163.com
假如沒有收到可以看看垃圾箱盅抚,有沒有收到,有些會默認(rèn)走到垃圾箱
1.5 mail常用命令
echo "測試郵件" | mail -s "測試"? remake@163.com
-s表示主題倔矾,"< mail.txt"表示把mail.txt里的內(nèi)容作為郵件正文
也可以用cat mail.txt的輸出作為mail命令的標(biāo)準(zhǔn)輸入妄均,作為郵件正文
-c表示抄送的地址 remake@126.com是直接發(fā)送的地址?
2.1.創(chuàng)建需要備份的文件夾
? ? ? ? ? ?名字可以隨便創(chuàng)建
? ? ? ?mkdir /home/dbback? ?
? ? ? cd /home/dbback??
? ? 2.2.創(chuàng)建 shell 腳本
? ??????名字隨便起
? ??????vim bkDatabaseName.sh?
? ? 2.2 .1? ?復(fù)制粘粘 內(nèi)容 (這是備份為 sql 文件)柱锹!根據(jù)需要來選取
????????????????注意:?
????????????????把 username 替換為實(shí)際的用戶名;?
????????????????把 password 替換為實(shí)際的密碼丰包;?
????????????????把DatabaseName 替換為實(shí)際的數(shù)據(jù)庫名禁熏;
?#!/bin/bash
mysqldump -uusername -ppassword DatabaseName >/home/dbback/DatabaseName_$(date +%Y%m%d_%H%M%S).sql
? ? ?2.2.2? 對備份進(jìn)行壓縮:(這是備份為 sql 壓縮 文件)!根據(jù)需要來選取
????????????????????注意 :mysql備份只能識別后綴sql.gz? 文件邑彪,不能識別?sql.tar.gz? ? ?
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip >/home/dbback/DatabaseName_$(date+%Y%m%d_%H%M%S).sql.gz
? ? 2.3.添加可執(zhí)行權(quán)限
? ? ? ? ? ? ? 注意:名字對應(yīng)腳本名字
? ??????????chmod u+x bkDatabaseName.sh??
? ??????????添加可執(zhí)行權(quán)限之后先執(zhí)行一下瞧毙,看看腳本有沒有錯(cuò)誤,能不能正常使用寄症;
./bkDatabaseName.sh
sh?bkDatabaseName.sh
注意可能這里會報(bào)錯(cuò):(可以忽略宙彪,因?yàn)猷]件已經(jīng)發(fā)送)
Warning: Using a password on the command lineinterface can be insecure.
? ?這是因?yàn)椋?導(dǎo)出MySQL數(shù)據(jù)庫的時(shí)候采用mysqldump命令,出現(xiàn)"Warning: Using a password on the command line interface can beinsecure."的錯(cuò)誤提示有巧,當(dāng)然數(shù)據(jù)庫肯定也沒有能備份下來释漆。這個(gè)問題應(yīng)該是在MySQL5.6+版本的時(shí)候就有出現(xiàn),可能是為了確保數(shù)據(jù)庫的安全性采用的保護(hù)機(jī)制篮迎。
解決方法男图、修改數(shù)據(jù)庫配置文件
我們需要修改數(shù)據(jù)庫配置文件,這個(gè)要看我們數(shù)據(jù)庫的配置的甜橱,有些是在/etc/my.cnf逊笆,有些是/etc/my.conf?
? ? ? ? ? ?我們需要在[client]部分添加腳本:
host=localhost
user=數(shù)據(jù)庫用戶
password='數(shù)據(jù)庫密碼'
3. 加上郵件發(fā)送 完整腳本
我創(chuàng)建腳本? /home/dbback/?
注意:里面根據(jù)自己的要求修改名字路徑!
#!/bin/bash?
mysqldump -u'賬號' -p'密碼' '備份的數(shù)據(jù)庫' | gzip >/home/dbback/test_$(date -d today +%Y%m%d).sql.gz
echo 'email 測試' | mail -a /home/dbback/test_$(date -d today +%Y%m%d).sql.gz -s 'mail sql' remake@163.com
rm -rf /home/dbback/test_$(date -d today +%Y%m%d).sql.gz?
3.1加上腳本權(quán)限
?chmod u+x bkDatabaseName.sh??
? ? ? ? 4.添加計(jì)劃任務(wù)
? ? ? ? ? ? ? ? 也可以? ?查看這個(gè):?http://www.reibang.com/p/847ec50a65c3? ? ?
? ? ? ? ? ? ? 首先? 輸入代碼檢測是否安裝 crontab
? ??????????rpm -qa | grep crontab
? ? ? ? ?如果沒安裝會顯示:? ?-bash: crontab: commandnotfound??
? ? ? ? 分別執(zhí)行這兩個(gè)命令渗鬼。
? ??????yum -y install vixie-cron
????????yum -y install crontabs
簡單說明:(偏一下題)
vixie-cron 是 cron 的主程序览露;
crontabs 是用來安裝、卸裝譬胎、或列舉用來驅(qū)動 cron 守護(hù)進(jìn)程的表格的程序差牛。
service crond start //啟動服務(wù)
service crond stop? ? ? //關(guān)閉服務(wù)
service crond restart? //重啟服務(wù)
service crond reload? ? //重新載入配置
service crond status? ? //查看crontab服務(wù)狀態(tài)
同樣可以設(shè)置開機(jī)自啟動:
chkconfig --level 345 crond on
正題
?輸入命令:(這時(shí)候會打開類似 vim 的編輯器)
? crontab -e
? ? ? ? ? ? 輸入內(nèi)容:(這個(gè)是一分鐘執(zhí)行一次備份)
*/1 * * * * /home/backup/bkDatabaseName.sh
??
? 4.1測試任務(wù)是否執(zhí)行
? ??很簡單,我們就執(zhí)行幾次“l(fā)s”命令堰乔,看看一分鐘過后文件有沒有被創(chuàng)建就可以了偏化!
? ? ?如果任務(wù)執(zhí)行失敗了,可以通過以下命令查看任務(wù)日志
????# tail -f /var/log/cron
????類似會出現(xiàn)這種: