定時備份 MySQL 并上傳到七牛

定時備份 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?命令。

配置七牛賬號,aksk?在七牛云控制臺 > 個人中心 > 密鑰管理內。

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?的其他詳細功能使用,可自行參考其文檔。

腳本內容

?
#!/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=7echo "-------------------------------------------" >> $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 "數據庫 [$dbname] 備份完成" >> $logFile
echo "$bakDir/$bakFile" >> $logFile
echo "開始上傳備份文件至七牛云存儲" >> $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

腳本中的數據庫配置、日志文件、存放路徑、<Bucket>等需自行修改,并存在。database/$bakFile,表示的是?<Key>,即在七牛存儲中的路徑&文件名,可自定義。

腳本文件需可執行權限,然后可以執行腳本進行測試。

定時任務

?
# 每天凌晨2點執行備份腳本
0 2 * * * /opt/backup/baksql.sh

如果定時任務未執行,可查看日志?/var/log/cron?排查問題,或者查看?crond?是否處于運行狀態。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456173.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456173.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456173.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue_props div賦值props定義變量 templete獲取

vue_props div賦值props定義變量 templete獲取 <div id"app"> <add v-bind:btn"h"></add> </div> <script> var vm new Vue({ el: #app, data: { h: "hello" }, components: { "add": { …

H.264句法和語法總結 句法元素的分層結構

在 H.264 定義的碼流中&#xff0c;句法元素被組織成有層次的結構&#xff0c;分別描述各個層次的信息&#xff0c;如下圖所示 在H.264 中&#xff0c;句法元素共被組織成 序列、圖像、片、宏塊、子宏塊五個層次。 在這樣的結構中&#xff0c;每一層的頭部和它的數據部分形成管…

instanceof 的運用

2019獨角獸企業重金招聘Python工程師標準>>> Java 中的instanceof 運算符是用來在運行時指出對象是否是特定類的一個實例。instanceof通過返回一個布爾值來指出&#xff0c;這個對象是否是這個特定類或者是它的子類的一個實例。 用法&#xff1a; result object i…

R 腳本讀取匯總 Excel 表格數據

主要用到了 xlsx 和 rJava 包&#xff0c;打開 Excel 文件&#xff0c;讀取各表格數據&#xff0c;再寫入到匯總表。 下圖為處理前的原始數據表格&#xff1a; 下圖為處理后的數據&#xff1a; 代碼實現 安裝&加載包的函數實現。installed.packages() 函數獲取所有已安裝…

[Grid Layout] Place grid items on a grid using grid-column and grid-row

It’s possible to position a grid item anywhere on a grid track. To do this, let’s specify some grid-template-columns and grid-template-rows, and to the grid items, we’ll pass grid-column and grid-row some numeric values. <!DOCTYPE html> <html l…

【大數據】最新大數據學習路線(完整詳細版,含整套教程)

大數據學習路線 java(Java se,javaweb) Linux(shell,高并發架構,lucene,solr) Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume) 機器學習(R,mahout) Storm(Storm,kafka,redis) Spark(scala,spark,spark core,spark sql,spark streaming,spark mllib,spa…

264編碼基本概念 FFMpeg的解碼流程

下面轉自http://topic.csdn.net/u/20081020/16/7156e0b2-dbfb-4b4f-af59-2be04cf9a420.html 的8樓 1、NAL、Slice與frame意思及相互關系 NAL指網絡提取層&#xff0c;里面放一些與網絡相關的信息Slice是片的意思&#xff0c;264中把圖像分成一幀&#xff08;frame&#xff09;…

谷歌瀏覽器開發調試工具中Sources面板 js調試等 完全介紹

這次分享的是Chrome開發工具中最有用的面板Sources。 Sources面板幾乎是我最常用到的Chrome功能面板&#xff0c;也是在我看來決解一般問題的主要功能面板。通常只要是開發遇到了js報錯或者其他代碼問題&#xff0c;在審視一遍自己的代碼而一無所獲之后&#xff0c;我首先就會打…

java XML解析防止外部實體注入

/** * 增加防止部實體注入邏輯* <功能詳細描述>* param reader* throws SAXException* see [類、類#方法、類#成員]*/public static void setReaderFeature(SAXReader reader)throws SAXException{reader.setFeature("http://apache.org/xml/features/disallow-doct…

【Python】最新Python學習路線(完整詳細版,含整套教程)

python目前應用最廣的三個崗位&#xff1a;全棧開發、數據分析、運維開發&#xff0c;今天我們就以這三個重點的崗位來做一下自學Python的規劃&#xff0c;希望你在學之前就能有明確的學習方向。 最近開始整理python的資料&#xff0c;博主建立了一個qq群&#xff0c;希望給大家…

程序員,軟件測試知多少?

送給初級程序員的測試認知文作為開發同學&#xff0c;一些基本的測試崗位相關知識還是很有必要了解一下&#xff0c;免的某些同學在工作中和測試同學斗嘴、打架、群毆等以及被測試鄙視....。 我們常常聽說的一些測試專業術語&#xff0c;比如白盒、黑盒、單元測試&#xff0c;相…

ffmpeg最新源代碼(定期更新)

為了方便那些不能連接到ffmpeg的SVN倉庫更新源代碼的用戶&#xff0c;ffmpeg工程組特開辟一個專區&#xff0c;定期更新ffmpeg的源代碼&#xff0c;并將其快照上傳&#xff0c;有需要的朋友可以長期關注本帖。ffmpeg的編譯指令通常為&#xff1a;1、配置&#xff1a;configurat…

vue 入門環境搭建

公司項目要用vue.js來開發&#xff0c;要使用vue來開發前端框架&#xff0c;首先要有環境&#xff0c;所以給大家介紹一下如何搭建vue環境。其實很簡單&#xff1a; 1.首先下載安裝node.js。 去官網https://nodejs.org/zh-cn/下載安裝包。 2.安裝webpack 打開cmd命令界面&#…

【解決】Win10修改host沒有權限問題

Step1&#xff1a;右鍵文件選擇屬性&#xff0c;選擇安全&#xff0c;點擊編輯&#xff1a; Step2&#xff1a;在彈窗中點擊添加&#xff0c;在彈窗中點擊高級&#xff1a; Step3&#xff1a;在彈窗中點擊立即查找&#xff0c;選中當前用戶&#xff0c;點擊確定&#xff1a; …

[已授權] 互聯網定位技術小談

? 誠邀阿里云先知社區邀請&#xff0c;不勝感激&#xff01;今日小編在此為大家介紹一下互聯網中所應用的定位技術。互聯網的發展日新月異&#xff0c;技術迭代很快&#xff0c;各行各業的智慧在互聯網這片藍天下碰撞結晶&#xff0c;造福大眾。今天要講述的集中定位方式&…

H.264解碼器ffmpeg完整優化代碼(包括PC和Windows Mobile版本)

這里把前段時間對ffmpeg0.48進行簡化和修改&#xff0c;包括修正內存泄漏&#xff0c;修改一些語句使Max Speed能夠打開這些。其實代碼還是比較亂的&#xff0c;也有很大的繼續優化空間。這個工作花費了我一些休息時間&#xff0c;不過&#xff0c;我確實學習到了很多。這個代碼…

1.4.在TypeScript中使用JQuery

我們可以通過類型定義文件(*.d.ts)實現在TS中使用JQ 1.4.1.方式1 通過GitHub項目&#xff0c;手動下載&#xff0c;不過推薦使用第二種方式 項目地址&#xff1a; https://github.com/DefinitelyTyped/DefinitelyTyped 1.4.2.通過typings的方式 項目地址&#xff1a;https://gi…

Python的DataFrame切片大全(包含多重索引)

碼字不易&#xff0c;喜歡請點贊&#xff01;&#xff01;&#xff01; 摘要 這篇主要講解如何對pandas的DataFrame進行切片&#xff0c;包括取某行、某列、某幾行、某幾列、以及多重索引的取數方法。 ? 選取行名、列名、值 ? 以標簽&#xff08;行、列的名字&#xff09;…

sql server 保留小數,向上保留指定位數的小數,僅記錄,勿看。

比如 4.05 要取成 4.1 &#xff0c; 4.16 取成 4.2 &#xff0c;4.5 取成 4.5 &#xff0c;意思就是小數部分第二位不管是多少都丟掉然后加0.1&#xff0c;但是如果是 4.5 這樣完整的就不需要處理。 可以像下面這么寫。 select ceiling(4.56*10)/10轉載于:https://www.cnblogs.…

HelloCsdn

博客聲明我的第一個文章我的第一個文章 從現在開始,我要再這里記錄我的學習心得和體會,讓我們相互學習,一起努力,共同進步.