博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定时备份 MySQL 并上传到七牛
阅读量:6147 次
发布时间:2019-06-21

本文共 2213 字,大约阅读时间需要 7 分钟。

多数应用场景下,我们需要对重要数据进行备份、并放置到一个安全的地方,以备不时之需。

常见的 MySQL 数据备份方式有,直接打包复制对应的数据库或表文件(物理备份)、mysqldump 全量逻辑备份、xtrabackup 增量逻辑备份等。

常见的数据存储方式有,本机存储、FTP 上传到远程服务器、云存储(如阿里云OSS、七牛云存储等)、甚至本地也行。

我们可能不想每次都手动去备份,也不想每次都那么耗时间的去下载,也不想就放在服务器上丢了,因为我们需要异地备份。那我们可以尝试,写个脚本定时备份数据库,然后自动上传到指定服务器或云存储。

这里,我们说说 Linux 服务器下备份 MySQL 并上传到七牛云存储的方式。

准备工作

  • Linux 系统

  • crontab 服务

    需保证 crond 服务处于启动&自启动状态。

  • gzip 命令

    需系统能正常执行 gzip 命令,用于压缩文件。

  • mysqldump 命令

    需系统能正常执行 mysqldump 命令,用于逻辑备份数据。mysqldump 备份的数据,系由可执行的 SQL 组成,不存在版本不兼容的问题。

  • qshell 工具

    qshell 是七牛云官方利用七牛文档上公开的 API 实现的一个方便开发者测试和使用七牛 API 服务的命令行工具。

    具体文档和下载地址:

  • 七牛云账号

    存储数据的前提当然是先有一个七牛的账号,七牛对个人提供10G的免费存储空间,可供我们个人使用。注册地址:

  • 七牛存储空间

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

qshell 配置

我们从官方地址中下载的 qshell 是个包含支持多个系统平台的压缩包,选择我们对应系统的那个二进制文件,赋予其可执行权限。也可以放置到 /usr/local/bin/ 等目录下,方便直接调用 qshell 命令。

配置七牛账号,aksk 在七牛云控制台 > 个人中心 > 密钥管理内。

qshell account ak sk

该命令会将 ak/sk 账号写入 ~/.qshell/account.json,此后就不用再配置了。

我们这里用的 qshell 命令是 rput,即以分片上传的方式上传一个文件,使用文档:

qshell rput 
true

qshell 的其他详细功能使用,可自行参考其。

脚本内容

#!/bin/sh# mysql data backup script## use mysqldump --help,get more detail.dbname=your_dbnameuser=your_db_usernamepassword=your_db_passwordbakDir=/opt/backup/sqllogFile=/opt/backup/mysqlbak.logdatetime=`date +%Y%m%d%H%M%S`keepDay=7echo "-------------------------------------------" >> $logFileecho $(date +"%y-%m-%d %H:%M:%S") >> $logFileecho "--------------------------" >> $logFilecd $bakDirbakFile=$dbname.$datetime.sql.gzmysqldump -u$user -p$password $dbname | gzip > $bakFileecho "数据库 [$dbname] 备份完成" >> $logFileecho "$bakDir/$bakFile" >> $logFileecho "开始上传备份文件至七牛云存储" >> $logFile/usr/local/bin/qshell rput 
database/$bakFile $bakFile true | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" >> $logFile 2>&1echo "删除${keepDay}天前的备份文件" >> $logFilefind $bakDir -ctime +$keepDay >> $logFilefind $bakDir -ctime +$keepDay -exec rm -rf {} \;echo " " >> $logFileecho " " >> $logFile

脚本中的数据库配置、日志文件、存放路径、<Bucket>等需自行修改,并存在。database/$bakFile,表示的是 <Key>,即在七牛存储中的路径&文件名,可自定义。

脚本文件需可执行权限,然后可以执行脚本进行测试。

定时任务

# 每天凌晨2点执行备份脚本0 2 * * * /opt/backup/baksql.sh

如果定时任务未执行,可查看日志 /var/log/cron 排查问题,或者查看 crond 是否处于运行状态。


原文地址:

转载于:https://www.cnblogs.com/shockerli/p/mysqldump-put-qiniu.html

你可能感兴趣的文章
Android应用资源---字符串资源类型(String)
查看>>
C++ 静态变量及函数的生命周期
查看>>
Chisel3 - util - Math vs. CircuitMath
查看>>
hdu 5607 BestCoder Round #68 (矩阵快速幂)
查看>>
javascript 冒泡与捕获的原理及操作实例
查看>>
每天一条linux命令
查看>>
[NOIP2012] 国王游戏
查看>>
子类构造器与父类构造器
查看>>
配置wamp环境使得在命令行下也能执行socket扩展
查看>>
K好数
查看>>
leetcode486
查看>>
高斯消元
查看>>
Git 笔记 - .gitignore
查看>>
想去美国?看完会成功率飙升的美国签证面试技巧
查看>>
《中华大字库》版权声明
查看>>
CodeVS 1506 传话
查看>>
Linux 菜鸟学习笔记--系统分区
查看>>
asp文件上传和下载
查看>>
最大公约数与欧几里德算法
查看>>
jquery on()方法绑定多个选择器,多个事件
查看>>