咱們在部署咱們的中小型項目時 在數據存儲 咱們一般選擇mysql
做爲咱們的存儲工具 那麼對於一個大的項目來講mysql
天天的數據量是十分大的 對於天天產生的數據 若是哪一天咱們的網站或者服務器受到攻擊 咱們的數據丟失是個很爆炸的事情linux
因此說天然這設計到數據庫的備份 那麼怎樣的備份是咱們想要的呢 git
對於備份的數據文件咱們可能會存放在服務器目錄 備份週期的話固然是按照數據量來講的 這裏咱們通常都是天天的凌晨備份一次sql
備份後的文件存放在咱們的服務器的目錄下面 可是萬一有一天服務器也崩潰了 那麼備份的文件也就沒了shell
因此咱們設想一個好的方案就是數據庫天天備份 每次備份自動提交到遠程倉庫 這裏我以碼云爲例數據庫
首先創建好遠程倉庫 在這裏我選擇了碼雲vim
新建一個私有倉庫 固然爲了每次能夠免密碼提交文件 在服務器裏能夠生成ssh key
具體的能夠看個人之前的一篇博客服務器
在服務器爲了存儲備份後的文件 新建一個備份目錄框架
$ mkdir /bak
進入該目錄後 繼續新建兩個文件夾 mysqlBak
和shDir
一個是放腳本文件 一個是放具體備份後的文件ssh
下面咱們能夠去新建腳本了 進入shDir
目錄後 執行
$ vim mysqlBak.sh
具體的代碼以下:
#!bin/sh ###################數據庫配置信息####################### createAt=`date +%Y-%m-%d-%H:%M:%S` user=root passwd=ghc1996 dbname=ispace mysql_back_path=/bak/mysqlBak ###################執行命令####################### mysqldump -u $user -p$passwd $dbname > $mysql_back_path/$createAt.sql cd /bak/mysqlBak /usr/local/git/bin/git add . /usr/local/git/bin/git commit -m $createAt /usr/local/git/bin/git push
這裏只是一個簡單的腳本 我想了解linux
的很容易看的懂 執行的就是備份數據庫並push
到遠程倉庫
那麼既然是腳本 咱們須要指明何時執行這個腳本 指定腳本執行
$ crontab -e
咱們但願是天天的凌晨執行一次備份 並添加到遠程倉庫 那麼添加
$ 0 0 * * * /bin/sh /bak/shDir/mysqlbak.sh
對linux
的crontab
指定的時間只有五個部分
段位 | 時間 |
---|---|
第一段 | 表明分鐘 0—59 |
第二段 | 表明小時 0—23 |
第三段 | 表明日期 1—31 |
第四段 | 表明月份 1—12 |
第五段 | 表明星期幾,0表明星期日 0—6 |
使用命令 crontab -e
而後直接編輯定時腳本。 時間 +具體的名字
舉個列子來講就是
0 0,3,7,9,12,15,18,21,23 * * * /bin/sh /bak/shell/mysqlBak.sh
這樣的話就是我天天0,,3,7,9,12,15,18,21,23點時會去執行這個腳本文件 那麼這就實現了基本的數據庫的備份
執行定時任務
$ crontab -l
若是服務沒有啓動 那麼從新啓動定時任務
$ systemctl restart crond
那麼如今這個定時任務就已經啓動了 對於提交遠程倉庫前提是在服務器生成ssh key並添加到碼雲 這在上面也提到過
對於須要提交文件的目錄初始化git
目錄就能夠了 這樣局能夠構成了咱們須要的本分任務
固然過程當中可能會遇到一些問題 我在下面的相關連接都已經羅列出來了
這樣一來咱們就能夠實現了天天的凌晨備份咱們的數據庫 並同時提交到咱們的碼雲這個遠程倉庫 這也是咱們想要的效果
我也說過備份的週期視咱們的項目的數據量的大小而定
對於每一個框架都有本身的備份機制 我這裏所寫的是咱們本身實現的一個通用的備份機制