日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

定时备份 MySQL 并上传到七牛

發布時間:2023/12/20 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 定时备份 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?命令。

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

腳本內容

? #!/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?是否處于運行狀態。

總結

以上是生活随笔為你收集整理的定时备份 MySQL 并上传到七牛的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。