天天看點

如何自動備份公司資料到雲存儲

<b></b>

背景

做過運維的都知道,最怕就是資料丢失,其它故障什麼都好說,資料沒了,那可是要死人的,是以dba這個崗位在公司都比較重視,當然薪水也不錯,一個合格的dba要做的事很多,遠不止隻做資料備份恢複工作(資料備份恢複是最基本基本的了),像調優、資料庫設計什麼的也都需要參與,甚至在項目立項時就要介入了。

之是以說了那麼多關于dba的事,就是簡單跟大家鋪墊下,告訴大家資料對公司或個人來講是多麼的重要,那既然重要,我們就要備份好它,一般做法都是資料庫本機留一個備份,然後再異地備份一份,但是随着目前雲成為大家選擇的主流,資料備份方式也是以發生了改變,今天我們就講下如何将資料庫備份到阿裡雲的oss上,你要問為什麼選擇oss?因為oss提供三重備份,故障自動恢複能力,保障資料可靠性99.99999999%。也就是說放到oos上的資料,永遠不用擔心丢失的問題。

環境和準備工作

阿裡雲的1台雲主機,上面有要備份的資料庫(我的是mysql),今天我們任務就是把資料庫備份到oss上;

登入阿裡雲控制台,點解最上面導航欄中accesskey選項,擷取accesskeyid 和accesskeysecret;

準備好資料庫備份腳本;

具體操作步驟<b> </b>

萬事俱備,隻欠行動了,go,go,go!!

<b>第一步:将我們資料庫備份到某目錄下,注明時間: </b>

運作備份腳本(注意在備份目錄下,我的在/home/dbback/下)

如何自動備份公司資料到雲存儲

檢視目錄是否生成備份檔案,心細的同學可能發現我這個mysqldump沒有指定使用者名和密碼,為啥我運作的時候費用輸入密碼呢?莫着急,馬上為你揭曉答案,因為mysql5.6後(具體版本編号不記得了),如果你把密碼寫到腳本裡,運作會有警告,告訴你不要把密碼寫到腳本裡,會有危險,那我的小夥伴該怎麼辦呢,官方給了解決方案,期望你是配置到my.cnf檔案中,是以,現在打開你的my.cnf,加入如下字段:

如何自動備份公司資料到雲存儲

有了以上這兩條,運作腳本時就不會在提示要輸入密碼了,馬上測試下,看是否成功,如果沒問題,我們進入下一步。

<b>第二步:如何自動備份到oss中,開始前我們要做兩件事:</b>

1、登入阿裡雲控制台,點右上“管理控制台”,然後點左上“産品與服務”,在第二列中點選“對象存儲oss”,如果沒開通就要開通,如果開通了直接點選右上的“建立bucket”,來建立一個bucket,記住buket的名字。(注:其實通過api也是可以直接建立bucket的,因為這個操作不多,是以我就用控制台來建立了,降低了解的難度。) 

2、開始寫上傳腳本,因為要導入oss的sdk,是以要下安裝下,比較簡單,跟安裝其他python包沒啥差別,解壓進入目錄,然後運作python setup.py install 就安裝完畢了,接下來看我們如何使用它,全部代碼如下:

我們接下來分析下腳本内容,其中腳本中注釋的行都不用看,是我編寫過程中測試用的,最開始我們設定了備份檔案的目錄和記錄日志的時間,然後生成了一個備份目錄所有檔案的清單(清單其實不是最好的方式,我是用最簡單的方式了,因為檔案多了,清單會慢),然後定義了兩個函數,get_time()函數是擷取檔案的建立時間戳,get_dist()函數是擷取檔案名和時間戳的字典,主函數部分比較難了解的根據字典value排序獲得檔案名了,d.iteritems()獲得字典中的每個key,value對,key指定了一個函數,operator.itemgetter(1)表示用value來排序(因為就兩個元素,key 是0,value就是1了),就是時間戳,排序完後傳回key,最後的[0]做了這個工作,腳本其它部分的内容我就不多說了,都是很常見的用法,沒什麼難于了解的,好,腳本就介紹到這裡,接下來進入我們最後一步。

<b>第三步:将腳本寫入crontab中,具體什麼時候執行,就根據大家各自業務不同來設定了,沒什麼特别的</b><b>。</b>

相關連結:<b></b>