定時備份 MySQL 并上傳到七牛
多數應用場景下,我們需要對重要數據進行備份、并放置到一個安全的地方,以備不時之需。
常見的 MySQL 數據備份方式有,直接打包復制對應的數據庫或表文件(物理備份)、
mysqldump
?全量邏輯備份、xtrabackup
?增量邏輯備份等。常見的數據存儲方式有,本機存儲、FTP 上傳到遠程服務器、云存儲(如阿里云OSS、七牛云存儲等)、甚至本地也行。
我們可能不想每次都手動去備份,也不想每次都那么耗時間的去下載,也不想就放在服務器上丟了,因為我們需要異地備份。那我們可以嘗試,寫個腳本定時備份數據庫,然后自動上傳到指定服務器或云存儲。
這里,我們說說 Linux 服務器下備份 MySQL 并上傳到七牛云存儲的方式。
準備工作
-
Linux
?系統 -
crontab
?服務需保證 crond 服務處于啟動&自啟動狀態。
-
gzip
?命令需系統能正常執行 gzip 命令,用于壓縮文件。
-
mysqldump
?命令需系統能正常執行?
mysqldump
?命令,用于邏輯備份數據。mysqldump
?備份的數據,系由可執行的 SQL 組成,不存在版本不兼容的問題。 -
qshell
?工具qshell
?是七牛云官方利用七牛文檔上公開的 API 實現的一個方便開發者測試和使用七牛 API 服務的命令行工具。具體文檔和下載地址:?https://developer.qiniu.com/kodo/tools/1302/qshell
-
七牛云賬號
存儲數據的前提當然是先有一個七牛的賬號,七牛對個人提供10G的免費存儲空間,可供我們個人使用。注冊地址:?https://portal.qiniu.com/signup?code=3looatwobaxci
-
七牛存儲空間
有了七牛云的賬號后,還需在控制臺手動創建一個空間(bucket)來存放數據。
qshell 配置
我們從官方地址中下載的 qshell 是個包含支持多個系統平臺的壓縮包,選擇我們對應系統的那個二進制文件,賦予其可執行權限。也可以放置到?/usr/local/bin/
?等目錄下,方便直接調用?qshell
?命令。
配置七牛賬號,ak
、sk
?在七牛云控制臺 > 個人中心 > 密鑰管理內。
1 | qshell account ak sk |
該命令會將 ak/sk 賬號寫入?~/.qshell/account.json
,此后就不用再配置了。
我們這里用的?qshell
?命令是?rput
,即以分片上傳的方式上傳一個文件,使用文檔:?https://github.com/qiniu/qshell/blob/master/docs/rput.md
1 | qshell rput <Bucket> <Key> <LocalFile> true |
qshell
?的其他詳細功能使用,可自行參考其文檔。
腳本內容
? | |
腳本中的數據庫配置、日志文件、存放路徑、<Bucket>
等需自行修改,并存在。database/$bakFile
,表示的是?<Key>
,即在七牛存儲中的路徑&文件名,可自定義。
腳本文件需可執行權限,然后可以執行腳本進行測試。
定時任務
? | |
如果定時任務未執行,可查看日志?/var/log/cron
?排查問題,或者查看?crond
?是否處于運行狀態。