Linux MySQL定時備份並上傳到git倉庫

簡介

咱們在部署咱們的中小型項目時 在數據存儲 咱們一般選擇mysql做爲咱們的存儲工具 那麼對於一個大的項目來講mysql

天天的數據量是十分大的 對於天天產生的數據 若是哪一天咱們的網站或者服務器受到攻擊 咱們的數據丟失是個很爆炸的事情linux

因此說天然這設計到數據庫的備份 那麼怎樣的備份是咱們想要的呢 git

對於備份的數據文件咱們可能會存放在服務器目錄 備份週期的話固然是按照數據量來講的 這裏咱們通常都是天天的凌晨備份一次sql

備份後的文件存放在咱們的服務器的目錄下面 可是萬一有一天服務器也崩潰了 那麼備份的文件也就沒了shell

因此咱們設想一個好的方案就是數據庫天天備份 每次備份自動提交到遠程倉庫 這裏我以碼云爲例數據庫

碼雲

首先創建好遠程倉庫 在這裏我選擇了碼雲vim

新建一個私有倉庫 固然爲了每次能夠免密碼提交文件 在服務器裏能夠生成ssh key 具體的能夠看個人之前的一篇博客服務器

服務器新建備份

在服務器爲了存儲備份後的文件 新建一個備份目錄框架

$ mkdir /bak

進入該目錄後 繼續新建兩個文件夾 mysqlBakshDir 一個是放腳本文件 一個是放具體備份後的文件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

linuxcrontab指定的時間只有個部分

段位 時間
第一段 表明分鐘 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目錄就能夠了 這樣局能夠構成了咱們須要的本分任務

固然過程當中可能會遇到一些問題 我在下面的相關連接都已經羅列出來了

這樣一來咱們就能夠實現了天天的凌晨備份咱們的數據庫 並同時提交到咱們的碼雲這個遠程倉庫 這也是咱們想要的效果

我也說過備份的週期視咱們的項目的數據量的大小而定

對於每一個框架都有本身的備份機制 我這裏所寫的是咱們本身實現的一個通用的備份機制

相關連接

相關文章
相關標籤/搜索