linux中數據庫的定時備份
相信大家都還記得這則新聞吧,歐洲云計算巨頭 OVH 位于法國斯特拉斯堡的機房發生嚴重火災,大火徹底摧毀了五層高、占地 500 平方米的 SBG2 數據中心。
當地報紙稱 115 位消防員投入 6 個小時才將其撲滅。經過長達 6 個小時的持續燃燒,SBG2 內的數據恐怕已經徹底丟失。
大火對歐洲范圍內的眾多網站造成嚴重影響。據 Netcraft 稱,目前跨 464000 個域的多達 360 萬個網站皆已下線。
數據是無價的,所以生產環境中定時備份數據庫顯得尤為重要。備份能防止服務器故障和人為誤操作帶來的數據丟失。
生產環境中linux操作系統也是服務器的首選,所以我們今天就以linux為例,說一說數據庫備份。
具體以什么數據庫為例呢,就以這幾年工作中接觸到的幾種常見數據庫為例吧。
OraclemysqlpostgresqlmongoDB在這里呢也給自己挖一個坑,工作中呢也用到winserver 作為服務器的情況,所以呢后面也整理更新下winserver 環境下數據庫備份。
2 crond 相關知識點2.1 crond 是什么?crond任務調度相當于我們日常生活中的鬧鐘。可以在某個時間點執行特定的命令和程序。 linux系統自身定期執行的任務工作:例如輪詢系統日志、備份系統數據、清理系統緩存、殺毒等等 用戶執行的工作任務:用戶通過設置任務調度,定時執行自己添加shell腳本或簡單的指令。例如每隔1分鐘和互聯網上時間服務器同步,每天凌晨1點備份數據庫等等
2.2 crontab 進行定時任務設置2.2.1 crontab 指令選項說明語法:
crontab[-e|-l|-r]-e:編輯crontab 定時任務-l:查詢crontab定時任務-r:刪除當前用戶所有的crontab定時任務2.2.2 crontab 指令使用格式crontab用戶的定時任務一般分為6段(空格分隔,系統的定時任務則/etc/crontab分為7段),其中前五段位時間設定段,第六段為所要執行的命令或腳本任務段。
①語法:
* * * * * cmd①cmd為要執行的命令或腳本,例如/server/scripts/lee.sh②每個段之間必須要有空格。② crontab語法格式中時間段的含義表
③ crontab語法格式中特殊符號的含義表
特殊符號含義*"*" 表示任意時間都,就是“每”的意思,舉例:如00 01 * * * cmd 表示每月每周每日的凌晨1點執行cmd任務。-"-" 表示分隔符,表示一個時間范圍段,如17-19點,每小時的00分執行任務。00 17-19 * * * cmd 表示17,18,19點整點分別執行的意思。,"," 表示分隔時間段的意思。30 17,18,19 * * * cmd 表示每天17,18,19點的半點執行cmd 也可以和“-”結合使用,如: 30 3-5,17-19 * * * cmd 表示每天3、4、5和17、18、19 執行/nn代表數字 即”每隔n單位時間”,例如:每10分鐘執行一次任務可以寫 */10 * * * * cmd,其中 /10,的范圍是0-59,也可以寫成0-59/10① 30 23 * * * cmd 表示每天23:30分執行cmd命令② 40 22 * * 1 cmd 表示每周一22:40分執行cmd命令③ 30 0 1-12 * * cmd 表示每月1號和12號 00:30執行cmd命令④ 30 0 * * 1-5 cmd 表示每周一和周五00:30執行命令⑤ */10 4 * * * cmd 表示每天4:00每隔10分鐘執行一次cmd命令2.2.4 crontab 設置步驟這里我們以每5分鐘同步一次互聯網時間為例進行說明
① 查看crond服務是否啟動
/sbin/service crond status --查看crond服務是否啟動
[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服務沒啟動則執行如下命令啟動crond服務
/sbin/service crond start 啟動服務查看進程
[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③ 給腳本增加執行權限
[root@xiezhr home]# chmod u+x /home/my.sh④ 設置定時任務crontab
[root@xiezhr home]# crontab -e*/5 * * * * /home/my.sh每天凌晨1點備份以上常見數據庫
① 創建備份腳本
在home路徑下創建backup.sh 并添加以上數據庫備份shell腳本
[root@xiezhr home]# vim /home/bakcup/backup.sh# 要備份那個數據庫,就往backup.sh 添加對應的shell腳本即可③ 給腳本增加執行權限
[root@xiezhr home]# chmod u+x /home/bakcup/backup.sh③ 設置定時任務crontab
[root@xiezhr home]# crontab -e0 1 * * * /home/bakcup/backup.sh本期到此就結束了,下一期我們說一說winserver環境下數據庫備份。
到此這篇關于linux中數據庫的定時備份的文章就介紹到這了,更多相關數據庫定時備份linux篇內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
