這是一個(gè)簡(jiǎn)單的MySQL數(shù)據(jù)庫(kù)備份shell腳本,適用于單臺(tái)Linux服務(wù)器或者VPS的mysql數(shù)據(jù)庫(kù)備份工作, 工作原理是使用mysql的 然后我們?cè)趕hell腳本中使用 scp命令把備份文件復(fù)制到另外一臺(tái)備份機(jī)器,由于scp每次傳送文件要密碼 因此我們需要使用 expect插件或者利用密鑰。在這里介紹采用生成密鑰對(duì)的方法。 1,生成密匙對(duì),我用的是rsa的密鑰。使用命令 "ssh-keygen -t rsa" 生成的過(guò)程中提示輸入密鑰對(duì)保存位置及密碼,直接回車,接受默認(rèn)值就行了。 其中公共密鑰保存在 ~/.ssh/id_rsa.pub,私有密鑰保存在 ~/.ssh/id_rsa 。 2,然后修改 .ssh 目錄權(quán)限,chmod 755 ~/.ssh 。最后把 公共密鑰復(fù)制到你要訪問(wèn) 的機(jī)器上去,并保存為:~/.ssh/authorized_keys 。 scp -P 1110 ~/.ssh/id_rsa.pub daniel@*.*.*.*:/home/daniel/.ssh/authorized_keys (注意這里- P 為大寫(xiě), 表示目標(biāo)機(jī)器daniel 的ssh端口為1110,小寫(xiě)的p為源ssh端口, 修改ssh端口在文件/etc/ssh/sshd_config下 。)這里完成scp 腳本免密鑰的方法介紹。 最后使用crontab定時(shí)執(zhí)行腳本即可! 腳本如下:
#vi /etc/crontab
在下面添加:
注意/data/backup/dump.sh為腳本的存放位置. 表示每天2點(diǎn)鐘執(zhí)行備份。 重新啟動(dòng)crond# /etc/rc.d/init.d/crond restart
當(dāng)scp備份到其他機(jī)器出現(xiàn)問(wèn)題時(shí) 查看/var/log下的cron日志,/如果var/log下沒(méi)有cron日志, 則需要:修改rsyslog,命令:sudo vim /etc/rsyslog.d/50-default.conf ,cron.* /var/log/cron.log #將cron前面的注釋符去掉 ,重啟rsyslog ,命令:sudo service rsyslog restart,可以查看crontab 日志。 less /var/log/cron.log , crontab問(wèn)題定位。
注意命令,格式:command > file 2>&1 2>&1 是將錯(cuò)誤輸出重定向到標(biāo)準(zhǔn)輸出。 然后將標(biāo)準(zhǔn)輸入重定向到文件file。&1 表示的是文件描述1, 表示標(biāo)準(zhǔn)輸出,如果這里少了&就成了數(shù)字1,就表示重定向到文件1。 這句命令的意思:首先是command > file將標(biāo)準(zhǔn)輸出重定向到file中, 2>&1 是標(biāo)準(zhǔn)錯(cuò)誤拷貝了標(biāo)準(zhǔn) 輸出,也就是同樣被重定向到file中,最終結(jié)果就是標(biāo)準(zhǔn)輸出和錯(cuò)誤都被重定向到file中。 |
|
來(lái)自: 鷹皇軟件 > 《系統(tǒng)運(yùn)維》