定時(shí)備份 Mysql并上傳到七牛的方法
多數(shù)應(yīng)用場(chǎng)景下,我們需要對(duì)重要數(shù)據(jù)進(jìn)行備份、并放置到一個(gè)安全的地方,以備不時(shí)之需。
常見(jiàn)的 MySQL 數(shù)據(jù)備份方式有,直接打包復(fù)制對(duì)應(yīng)的數(shù)據(jù)庫(kù)或表文件(物理備份)、mysqldump 全量邏輯備份、xtrabackup 增量邏輯備份等。
常見(jiàn)的數(shù)據(jù)存儲(chǔ)方式有,本機(jī)存儲(chǔ)、FTP 上傳到遠(yuǎn)程服務(wù)器、云存儲(chǔ)(如阿里云OSS、七牛云存儲(chǔ)等)、甚至本地也行。
我們可能不想每次都手動(dòng)去備份,也不想每次都那么耗時(shí)間的去下載,也不想就放在服務(wù)器上丟了,因?yàn)槲覀冃枰惖貍浞?。那我們可以嘗試,寫(xiě)個(gè)腳本定時(shí)備份數(shù)據(jù)庫(kù),然后自動(dòng)上傳到指定服務(wù)器或云存儲(chǔ)。
這里,我們說(shuō)說(shuō) Linux 服務(wù)器下備份 MySQL 并上傳到七牛云存儲(chǔ)的方式。
準(zhǔn)備工作
•Linux 系統(tǒng)
•crontab 服務(wù)
需保證 crond 服務(wù)處于啟動(dòng)&自啟動(dòng)狀態(tài)。
•gzip 命令
需系統(tǒng)能正常執(zhí)行 gzip 命令,用于壓縮文件。
•mysqldump 命令
需系統(tǒng)能正常執(zhí)行 mysqldump 命令,用于邏輯備份數(shù)據(jù)。mysqldump 備份的數(shù)據(jù),系由可執(zhí)行的 SQL 組成,不存在版本不兼容的問(wèn)題。
•qshell 工具
qshell 是七牛云官方利用七牛文檔上公開(kāi)的 API 實(shí)現(xiàn)的一個(gè)方便開(kāi)發(fā)者測(cè)試和使用七牛 API 服務(wù)的命令行工具。
具體文檔和下載地址: https://developer.qiniu.com/kodo/tools/1302/qshell
•七牛云賬號(hào)
存儲(chǔ)數(shù)據(jù)的前提當(dāng)然是先有一個(gè)七牛的賬號(hào),七牛對(duì)個(gè)人提供10G的免費(fèi)存儲(chǔ)空間,可供我們個(gè)人使用。注冊(cè)地址:
https://portal.qiniu.com/signup?code=3looatwobaxci
•七牛存儲(chǔ)空間
有了七牛云的賬號(hào)后,還需在控制臺(tái)手動(dòng)創(chuàng)建一個(gè)空間(bucket)來(lái)存放數(shù)據(jù)。
qshell 配置
我們從官方地址中下載的 qshell 是個(gè)包含支持多個(gè)系統(tǒng)平臺(tái)的壓縮包,選擇我們對(duì)應(yīng)系統(tǒng)的那個(gè)二進(jìn)制文件,賦予其可執(zhí)行權(quán)限。也可以放置到 /usr/local/bin/ 等目錄下,方便直接調(diào)用 qshell 命令。
配置七牛賬號(hào),ak、sk 在七牛云控制臺(tái) > 個(gè)人中心 > 密鑰管理內(nèi)。
qshell account ak sk
該命令會(huì)將 ak/sk 賬號(hào)寫(xiě)入 ~/.qshell/account.json,此后就不用再配置了。
我們這里用的 qshell 命令是 rput,即以分片上傳的方式上傳一個(gè)文件,使用文檔:
https://github.com/qiniu/qshell/blob/master/docs/rput.md
qshell rput <Bucket> <Key> <LocalFile> true
qshell 的其他詳細(xì)功能使用,可自行參考其文檔。
腳本內(nèi)容
#!/bin/sh # mysql data backup script # # use mysqldump --help,get more detail. dbname=your_dbname user=your_db_username password=your_db_password bakDir=/opt/backup/sql logFile=/opt/backup/mysqlbak.log datetime=`date +%Y%m%d%H%M%S` keepDay=7 echo "-------------------------------------------" >> $logFile echo $(date +"%y-%m-%d %H:%M:%S") >> $logFile echo "--------------------------" >> $logFile cd $bakDir bakFile=$dbname.$datetime.sql.gz mysqldump -u$user -p$password $dbname | gzip > $bakFile echo "數(shù)據(jù)庫(kù) [$dbname] 備份完成" >> $logFile echo "$bakDir/$bakFile" >> $logFile echo "開(kāi)始上傳備份文件至七牛云存儲(chǔ)" >> $logFile /usr/local/bin/qshell rput <Bucket> database/$bakFile $bakFile true | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" >> $logFile 2>&1 echo "刪除${keepDay}天前的備份文件" >> $logFile find $bakDir -ctime +$keepDay >> $logFile find $bakDir -ctime +$keepDay -exec rm -rf {} \; echo " " >> $logFile echo " " >> $logFile
腳本中的數(shù)據(jù)庫(kù)配置、日志文件、存放路徑、<Bucket>等需自行修改,并存在。database/$bakFile,表示的是 <Key>,即在七牛存儲(chǔ)中的路徑&文件名,可自定義。
腳本文件需可執(zhí)行權(quán)限,然后可以執(zhí)行腳本進(jìn)行測(cè)試。
定時(shí)任務(wù)
# 每天凌晨2點(diǎn)執(zhí)行備份腳本 * 2 * * * /opt/backup/baksql.sh
如果定時(shí)任務(wù)未執(zhí)行,可查看日志 /var/log/cron 排查問(wèn)題,或者查看 crond 是否處于運(yùn)行狀態(tài)。
總結(jié)
以上所述是小編給大家介紹的定時(shí)備份 Mysql并上傳到七牛的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- shell腳本實(shí)現(xiàn)mysql定時(shí)備份、刪除、恢復(fù)功能
- CentOS下mysql定時(shí)備份Shell腳本分享
- MySQL定時(shí)備份方案(利用Linux crontab)
- 淺析mysql 定時(shí)備份任務(wù)
- MySQL定時(shí)備份數(shù)據(jù)庫(kù)操作示例
- MySQL數(shù)據(jù)庫(kù)定時(shí)備份的實(shí)現(xiàn)方法
- linux實(shí)現(xiàn)定時(shí)備份mysql數(shù)據(jù)庫(kù)的簡(jiǎn)單方法
- linux實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)每天自動(dòng)備份定時(shí)備份
- Mysql數(shù)據(jù)庫(kù)定時(shí)備份腳本分享
- Windows下MySQL定時(shí)備份腳本的實(shí)現(xiàn)
- mysql自動(dòng)定時(shí)備份數(shù)據(jù)庫(kù)的最佳方法(windows服務(wù)器)
- 在Windows環(huán)境下使用MySQL:實(shí)現(xiàn)自動(dòng)定時(shí)備份
相關(guān)文章
MySQL?數(shù)據(jù)庫(kù)?增刪查改、克隆、外鍵?等操作總結(jié)
這篇文章主要介紹了MySQL?數(shù)據(jù)庫(kù)?增刪查改、克隆、外鍵?等操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05MySQL觸發(fā)器實(shí)現(xiàn)兩表數(shù)據(jù)同步的代碼詳解
在數(shù)據(jù)庫(kù)應(yīng)用中,我們經(jīng)常需要對(duì)數(shù)據(jù)進(jìn)行某些操作,并在操作完成后進(jìn)行相應(yīng)的處理,這時(shí)候,可以使用觸發(fā)器來(lái)實(shí)現(xiàn)這些功能,MySQL提供了強(qiáng)大的觸發(fā)器功能,本文將給大家詳細(xì)介紹MySQL觸發(fā)器實(shí)現(xiàn)兩表數(shù)據(jù)同步,需要的朋友可以參考下2023-12-12MySQL 索引的優(yōu)缺點(diǎn)以及創(chuàng)建索引的準(zhǔn)則
這篇文章主要介紹了MySQL 索引的優(yōu)劣以及創(chuàng)建索引的準(zhǔn)則,幫助大家更好的理解和使用MySQL 索引,感興趣的朋友可以了解下2020-09-09MySQL中執(zhí)行計(jì)劃explain命令示例詳解
這篇文章主要給大家介紹了關(guān)于MySQL中執(zhí)行計(jì)劃explain命令的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用explain命令具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面說(shuō)來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05mysql格式化小數(shù)保留小數(shù)點(diǎn)后兩位(小數(shù)點(diǎn)格式化)
今天遇到一個(gè)問(wèn)題,格式化浮點(diǎn)數(shù)的問(wèn)題,用format(col,2)保留兩位小數(shù)點(diǎn),出現(xiàn)一個(gè)問(wèn)題,例如下面的語(yǔ)句,后面我們給出解決方法2013-12-12Mysql 5.5.56版本(二進(jìn)制包安裝)自定義安裝路徑步驟記錄
這篇文章主要介紹了Mysql 5.5.56版本(二進(jìn)制包安裝)自定義安裝路徑步驟記錄,需要的朋友可以參考下2017-07-07mysql 數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn)
這篇文章主要介紹了mysql 數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02