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

簡介

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

對于備份的數據文件我們可能會存放在服務器目錄, 備份周期的話當然是按照數據量來說的, 這里我們一般都是每天的凌晨備份一次. 備份后的文件存放在我們的服務器的目錄下面, 但是萬一有一天服務器也崩潰了, 那么備份的文件也就沒了, 所以我們設想一個好的方案就是數據庫每天備份 每次備份自動提交到遠程倉庫, 這里我以碼云為例.

推薦學習:《linux教程

碼云

首先建立好遠程倉庫, 在這里我選擇了 碼云

新建一個私有倉庫, 當然為了每次可以免密碼提交文件, 在服務器里可以生成 ssh key

服務器新建備份

在服務器為了存儲備份后的文件, 新建一個備份目錄

$?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 指定的時間只有五個部分

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

使用命令 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 目錄就可以了, 這樣局可以構成了我們需要的本分任務.

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

這樣一來我們就可以實現了每天的凌晨備份我們的數據庫, 并同時提交到我們的碼云這個遠程倉庫, 這也是我們想要的效果.

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

對于每個框架都有自己的備份機制 我這里所寫的是我們自己實現的一個通用的備份機制

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享