定时备份 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/k…

  • 七牛云账号

    存储数据的条件当然是先有一个七牛的账号,七牛对个人供应10G的免费存储空间,可供我们个人运用。注册地点:
    https://portal.qiniu.com/sign…

  • 七牛存储空间

    有了七牛云的账号后,还需在控制台手动建立一个空间(bucket)来寄存数据。

qshell 设置

我们从官方地点中下载的 qshell 是个包括支撑多个体系平台的压缩包,挑选我们对应体系的谁人二进制文件,给予其可实行权限。也能够安排到 /usr/local/bin/ 等目录下,轻易直接挪用 qshell 敕令。

设置七牛账号,aksk 在七牛云控制台 > 个人中间 > 密钥治理内。

qshell account ak sk

该敕令会将 ak/sk 账号写入 ~/.qshell/account.json,今后就不必再设置了。

我们这里用的 qshell 敕令是 rput,即以分片上传的体式格局上传一个文件,运用文档: https://github.com/qiniu/qshe…

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=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 "数据库 [$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 是不是处于运转状况。

原文地点:
https://shockerli.net/post/my…

更多文章请接见我的个人博客:
https://shockerli.net

    原文作者:Jioby
    原文地址: https://segmentfault.com/a/1190000016633549
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞