首頁  >  文章  >  運維  >  Linux MySQL 定時備份並上傳到 git 倉庫

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

藏色散人
藏色散人轉載
2019-12-24 14:29:292341瀏覽

簡介

我們在部署我們的中小型專案時, 在資料儲存, 我們通常選擇mysql 作為我們的儲存工具. 那麼對於一個大的專案來說, 每天的資料量是十分大的. 對於每天產生的資料, 如果哪一天我們的網站或伺服器受到攻擊, 我們的資料遺失是個很爆炸的事情, 所以說自然這設計到資料庫的備份. 那麼怎樣的備份是我們想要的呢? 

對於備份的資料檔案我們可能會存放在伺服器目錄, 備份週期的話當然是按照資料量來說的, 這裡我們一般都是每天的凌晨備份一次. 備份後的文件存放在我們的伺服器的目錄下面, 但是萬一有一天伺服器也崩潰了, 那麼備份的文件也就沒了, 所以我們設想一個好的方案就是資料庫每天備份每次備份自動提交到遠端倉庫,這裡我以碼雲為例.

推薦學習:《linux教程

碼雲

#首先建立好遠端倉庫, 在這裡我選擇了碼雲

新建一個私有倉庫, 當然為了每次可以免密碼提交檔案, 在伺服器裡可以產生ssh key

#伺服器新備份

在伺服器為了儲存備份後的檔案, 新建一個備份目錄Linux MySQL 定時備份並上傳到 git 倉庫

$ mkdir /bak

進入該目錄後, 繼續新建兩個資料夾mysqlBak 和shDir, 一個是放腳本檔,一個是放具體備份後的檔案.

下面我們可以去新建腳本了, 進入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 指定的時間只有五個部分

#使用指令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 目錄就可以了, 這樣局可以構成了我們需要的本分任務.######當然過程中可能會遇到一些問題, 我在下面的相關鏈接都已經羅列出來了.######這樣一來我們就可以實現了每天的凌晨備份我們的資料庫, 並同時提交到我們的碼雲這個遠端倉庫, 這也是我們想要的效果.#######我也說過備份的周期視我們的項目的資料量的大小而定.######對於每個框架都有自己的備份機制我這裡所寫的是我們自己實現的一個通用的備份機制###

以上是Linux MySQL 定時備份並上傳到 git 倉庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:ruoxiaozh.com。如有侵權,請聯絡admin@php.cn刪除