linux中數(shù)據(jù)庫的定時備份
相信大家都還記得這則新聞吧,歐洲云計算巨頭 OVH 位于法國斯特拉斯堡的機房發(fā)生嚴(yán)重火災(zāi),大火徹底摧毀了五層高、占地 500 平方米的 SBG2 數(shù)據(jù)中心。
當(dāng)?shù)貓蠹埛Q 115 位消防員投入 6 個小時才將其撲滅。經(jīng)過長達 6 個小時的持續(xù)燃燒,SBG2 內(nèi)的數(shù)據(jù)恐怕已經(jīng)徹底丟失。
大火對歐洲范圍內(nèi)的眾多網(wǎng)站造成嚴(yán)重影響。據(jù) Netcraft 稱,目前跨 464000 個域的多達 360 萬個網(wǎng)站皆已下線。
數(shù)據(jù)是無價的,所以生產(chǎn)環(huán)境中定時備份數(shù)據(jù)庫顯得尤為重要。備份能防止服務(wù)器故障和人為誤操作帶來的數(shù)據(jù)丟失。
生產(chǎn)環(huán)境中l(wèi)inux操作系統(tǒng)也是服務(wù)器的首選,所以我們今天就以linux為例,說一說數(shù)據(jù)庫備份。
具體以什么數(shù)據(jù)庫為例呢,就以這幾年工作中接觸到的幾種常見數(shù)據(jù)庫為例吧。
OraclemysqlpostgresqlmongoDB在這里呢也給自己挖一個坑,工作中呢也用到winserver 作為服務(wù)器的情況,所以呢后面也整理更新下winserver 環(huán)境下數(shù)據(jù)庫備份。
2 crond 相關(guān)知識點2.1 crond 是什么?crond任務(wù)調(diào)度相當(dāng)于我們?nèi)粘I钪械聂[鐘。可以在某個時間點執(zhí)行特定的命令和程序。 linux系統(tǒng)自身定期執(zhí)行的任務(wù)工作:例如輪詢系統(tǒng)日志、備份系統(tǒng)數(shù)據(jù)、清理系統(tǒng)緩存、殺毒等等 用戶執(zhí)行的工作任務(wù):用戶通過設(shè)置任務(wù)調(diào)度,定時執(zhí)行自己添加shell腳本或簡單的指令。例如每隔1分鐘和互聯(lián)網(wǎng)上時間服務(wù)器同步,每天凌晨1點備份數(shù)據(jù)庫等等
2.2 crontab 進行定時任務(wù)設(shè)置2.2.1 crontab 指令選項說明語法:
crontab[-e|-l|-r]-e:編輯crontab 定時任務(wù)-l:查詢crontab定時任務(wù)-r:刪除當(dāng)前用戶所有的crontab定時任務(wù)2.2.2 crontab 指令使用格式crontab用戶的定時任務(wù)一般分為6段(空格分隔,系統(tǒng)的定時任務(wù)則/etc/crontab分為7段),其中前五段位時間設(shè)定段,第六段為所要執(zhí)行的命令或腳本任務(wù)段。
①語法:
* * * * * cmd①cmd為要執(zhí)行的命令或腳本,例如/server/scripts/lee.sh②每個段之間必須要有空格。② crontab語法格式中時間段的含義表
③ crontab語法格式中特殊符號的含義表
特殊符號含義*"*" 表示任意時間都,就是“每”的意思,舉例:如00 01 * * * cmd 表示每月每周每日的凌晨1點執(zhí)行cmd任務(wù)。-"-" 表示分隔符,表示一個時間范圍段,如17-19點,每小時的00分執(zhí)行任務(wù)。00 17-19 * * * cmd 表示17,18,19點整點分別執(zhí)行的意思。,"," 表示分隔時間段的意思。30 17,18,19 * * * cmd 表示每天17,18,19點的半點執(zhí)行cmd 也可以和“-”結(jié)合使用,如: 30 3-5,17-19 * * * cmd 表示每天3、4、5和17、18、19 執(zhí)行/nn代表數(shù)字 即”每隔n單位時間”,例如:每10分鐘執(zhí)行一次任務(wù)可以寫 */10 * * * * cmd,其中 /10,的范圍是0-59,也可以寫成0-59/10① 30 23 * * * cmd 表示每天23:30分執(zhí)行cmd命令② 40 22 * * 1 cmd 表示每周一22:40分執(zhí)行cmd命令③ 30 0 1-12 * * cmd 表示每月1號和12號 00:30執(zhí)行cmd命令④ 30 0 * * 1-5 cmd 表示每周一和周五00:30執(zhí)行命令⑤ */10 4 * * * cmd 表示每天4:00每隔10分鐘執(zhí)行一次cmd命令2.2.4 crontab 設(shè)置步驟這里我們以每5分鐘同步一次互聯(lián)網(wǎng)時間為例進行說明
① 查看crond服務(wù)是否啟動
/sbin/service crond status --查看crond服務(wù)是否啟動
[root@xiezhr /]# /sbin/service crond statusRedirecting to /bin/systemctl status crond.service● crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-01-10 21:14:50 CST; 1 months 25 days ago Main PID: 990 (crond) CGroup: /system.slice/crond.service └─990 /usr/sbin/crond -nJan 25 14:00:01 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...oryJan 25 14:30:02 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...oryJan 25 15:00:02 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...oryJan 25 15:30:01 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...oryJan 25 16:00:01 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...oryJan 25 16:24:01 xiezhr crond[990]: (*system*) RELOAD (/etc/cron.d/yunjing)Jan 28 11:18:01 xiezhr crond[990]: (*system*) RELOAD (/etc/cron.d/sgagenttask)Jan 28 11:18:01 xiezhr crond[990]: (root) RELOAD (/var/spool/cron/root)Feb 07 12:03:01 xiezhr crond[990]: (*system*) RELOAD (/etc/cron.d/yunjing)Feb 07 12:03:01 xiezhr crond[990]: (root) RELOAD (/var/spool/cron/root)Hint: Some lines were ellipsized, use -l to show in full.如果crond服務(wù)沒啟動則執(zhí)行如下命令啟動crond服務(wù)
/sbin/service crond start 啟動服務(wù)查看進程
[root@xiezhr /]# ps -ef|grep crondroot 990 1 0 Jan10 ?00:00:22 /usr/sbin/crond -nroot 19552 15271 0 16:10 pts/1 00:00:00 grep --color=auto crond② 編寫shell腳本
在home路徑下添加如下shell腳本
[root@xiezhr home]# vim /home/my.sh/usr/sbin/ntpdate time.windows.com >/dev/null 2>&1③ 給腳本增加執(zhí)行權(quán)限
[root@xiezhr home]# chmod u+x /home/my.sh④ 設(shè)置定時任務(wù)crontab
[root@xiezhr home]# crontab -e*/5 * * * * /home/my.sh每天凌晨1點備份以上常見數(shù)據(jù)庫
① 創(chuàng)建備份腳本
在home路徑下創(chuàng)建backup.sh 并添加以上數(shù)據(jù)庫備份shell腳本
[root@xiezhr home]# vim /home/bakcup/backup.sh# 要備份那個數(shù)據(jù)庫,就往backup.sh 添加對應(yīng)的shell腳本即可③ 給腳本增加執(zhí)行權(quán)限
[root@xiezhr home]# chmod u+x /home/bakcup/backup.sh③ 設(shè)置定時任務(wù)crontab
[root@xiezhr home]# crontab -e0 1 * * * /home/bakcup/backup.sh本期到此就結(jié)束了,下一期我們說一說winserver環(huán)境下數(shù)據(jù)庫備份。
到此這篇關(guān)于linux中數(shù)據(jù)庫的定時備份的文章就介紹到這了,更多相關(guān)數(shù)據(jù)庫定時備份linux篇內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
