實戰 將MySQL備份上傳到私有雲

2021-10-01 05:01:53 字數 4852 閱讀 4024

閱讀本文大約需要 10 分鐘

傳送門:

實戰-mysql定時全量備份(1)

實戰-mysql定時增量備份(2)

前兩篇文章聊了 mysql 的全量備份與增量備份,我們也學會了資料庫的備份與恢復。這也增強了我們資料庫的安全性。假如,我們整台資料庫伺服器被劫持了,或者遇到了其他毀滅性的災難,即使備份了也沒個毛用,因為備份檔案也在同一臺伺服器啊。那麼我們就會想如何備份的同時,上傳到其他私有雲,這樣我們就不用擔心了。於是便有了本文。

回顧ok,學習了上兩篇文章,我們已經可以輕鬆地備份資料庫,也得到了以下指令碼檔案。而在下面指令碼的最後幾行,我新增了幾行將備份檔案上傳到私有雲的**。這裡我注釋掉了,如要使用請取消注釋。ok,現在讓我們一起打怪公升級。

#!/bin/bash

#獲取當前時間

date_now=$(date "+%y%m%d-%h%m%s")

backupfolder=/home/db/backup/mysql

username="root"

password="123456"

db_name="zone"

#定義備份檔案名

filename="$_$.sql"

#定義備份檔案目錄

backupfilename="$/$"

echo "starting backup mysql $ at $."

/usr/bin/mysqldump -u$ -p$  --lock-all-tables --flush-logs $ > $

#進入到備份檔案目錄

cd $

#壓縮備份檔案

tar zcvf $.tar.gz $

# use nodejs to upload backup file other place

#node_env=$backupfolder@$backupfilename node /home/tasks/upload.js

date_end=$(date "+%y%m%d-%h%m%s")

echo "finish backup mysql database $ at $."

# 使用 nodejs 上傳備份檔案到 私有雲

#node_env=$backupfolder@$backupfilename /root/node/v8.11.3/bin/node /usr/local/upload.js

# 使用 python 上傳備份檔案到 私有雲

#python /use/local/upload.py $backupfolder $backupfilename

# 使用 python 上傳備份檔案到 私有雲

#python /use/local/upload.py $backupfolder $backupfilename

$backupfolder #備份檔案的所在目錄

$backupfilename #備份檔案名

這兩個引數為傳給 upload.py 的引數。

# 使用 nodejs 上傳備份檔案到 私有雲

#/root/node/v8.11.3/bin/node /usr/local/upload.js $backupfolder $backupfilename

這兩個引數為傳給 upload.js 的引數。

這裡的私有雲使用的是七牛雲,使用其他私有雲請自行替換。以下指令碼中,替換你自己的 access_key、secret_key、bucket_name(儲存倉庫名)  即可使用。

from qiniu import auth, put_file, etag

import sys

print('引數個數為:', len(sys.ar**), '個引數。')

print('引數列表:', str(sys.ar**))

# backupfolder,獲取備份檔案的目錄

backupfolder = sys.ar**[1]

# backupfilename,獲取備份檔案的檔名

backupfilename = sys.ar**[2]

import qiniu.config

# 需要填寫你的 access key 和 secret key

access_key = 'your_key'

secret_key = 'your_key'

# 構建鑑權物件

q = auth(access_key, secret_key)

# 要上傳的空間

bucket_name = 'test'

# 上傳到七牛後儲存的檔名

key = backupfilename

# 生成上傳 token,可以指定過期時間等

token = q.upload_token(bucket_name, key, 3600)

# 要上傳檔案的本地路徑

localfile = backupfolder + backupfilename

ret, info = put_file(token, key, localfile)

print(info)

assert ret['key'] == key

assert ret['hash'] == etag(localfile)

這裡的私有雲使用的是七牛雲,使用其他私有雲請自行替換。以下指令碼中,替換你自己的 access_key、secret_key、bucket(儲存倉庫名)  即可使用。

let qiniu = require("qiniu");

let arguments = process.ar**.splice(2);

console.log(process.ar**)

console.log('所傳遞的引數是:', arguments[0]);

console.log('所傳遞的引數是:', arguments[1]);

let file = arguments[1];

let filepath = arguments[0] + '/' + file;

console.log(filepath);

bucket = "test"//你的儲存空間名

//需要填寫你的 access key 和 secret key

let accesskey = 'access_key';

let secretkey = 'secret_key';

let config = new qiniu.conf.config();

// 空間對應的機房,選擇機房得看七牛的文件:

config.zone = qiniu.zone.zone_z0;

let mac = new qiniu.auth.digest.mac(accesskey, secretkey);

let options = ;

let putpolicy = new qiniu.rs.putpolicy(options);

let uploadtoken=putpolicy.uploadtoken(mac);

let localfile = filepath;

let formuploader = new qiniu.form_up.formuploader(config);

let putextra = new qiniu.form_up.putextra();

let key = file;

// 檔案上傳

formuploader.putfile(uploadtoken, key, localfile, putextra, function (resperr, respbody, respinfo)

if (respinfo.statuscode == 200) else

});

上圖為我本地執行指令碼檔案上傳 readme.md 的截圖。上傳成功。

github 中的私有倉庫需要付費,可以選擇碼雲來作為私有倉庫,其私有倉庫的免費的。

#!/bin/bash

#獲取當前時間

date_now=$(date "+%y%m%d-%h%m%s")

backupfolder=/home/db/backup/mysql

username="root"

password="123456"

db_name="zone"

#定義備份檔案名

filename="$_$.sql"

#定義備份檔案目錄

backupfilename="$/$"

echo "starting backup mysql $ at $."

/usr/bin/mysqldump -u$ -p$  --lock-all-tables --flush-logs $ > $

#進入到備份檔案目錄

cd $

#壓縮備份檔案

tar zcvf $.tar.gz $

# use nodejs to upload backup file other place

#node_env=$backupfolder@$backupfilename node /home/tasks/upload.js

date_end=$(date "+%y%m%d-%h%m%s")

echo "finish backup mysql database $ at $."

git add .

git commit -m 'commit by script'

git push

Oracle RMAN備份上傳到阿里雲OSS指令碼

dba都知道,備份對於資料庫的重要性是不言而喻的。特別是在誤刪資料的情況,救命用的最多的可能就是備份了。有個客戶的環境也比較複雜,單個伺服器有三個oracle例項,而且是部署在不同使用者下的。現在的需求是要把不同使用者下的oracle例項全量物理備份上傳到阿里雲的oss上,保證備份檔案的安全性 阿里...

實戰備份mysql指令碼

指令碼實現功能如下 1.備份指定資料庫 2.刪除超過10天的備份檔案 3.周一到周五,備份恢復到指定的同乙個資料庫 週六和週日,備份恢復到指定的不同資料庫 4.使用gzip對備份檔案進行壓縮 bin sh start dbuser icken dpwd 123456 dbname chickens ...

mysql資料庫上傳到伺服器

mysql生成.sql指令碼 在mysql安裝目錄,bin資料夾中 新建乙個記事本,在內新增如下內容 mysqldunp h127.0.0.1 uroot p123 dbname dbname.sql 儲存檔案並重命名,備份mysql為sql指令碼.bat 注意字尾名 雙擊批處理檔案即可生成sql檔...