定时备份 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 命令。

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

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 并上传到七牛相关推荐

  1. mysql备份七牛云存储_定时备份 Mysql并上传到七牛的方法

    多数应用场景下,我们需要对重要数据进行备份.并放置到一个安全的地方,以备不时之需. 常见的 MySQL 数据备份方式有,直接打包复制对应的数据库或表文件(物理备份).mysqldump 全量逻辑备份. ...

  2. laravel上传到七牛图片插件

    1.首先引入两个插件 2.在https://developer.qiniu.com/kodo/sdk/1241/php找到安装命令 在终端运行composer require qiniu/php-sd ...

  3. Vue爬坑之旅(二十一):vue使用富文本编辑器vue-quill-editor实现配合后台将图片上传至七牛

    一.全局注册:main.js import Vue from 'vue' import VueQuillEditor, { Quill } from 'vue-quill-editor' import ...

  4. 七牛云图床php,PHP实现Markdown文章上传到七牛图床的实例内容

    在使用 Markdown 编写文章之后,经常需要发布到不同的平台,这里会遇到一个问题,文章的图片需要手动的进行上传,管理起来非常不方便,因此,强烈建议将图片统一上传到图床中,这样的话一篇文章就可以轻松 ...

  5. php大图片接口上传慢,七牛php sdk上传文件太慢

    问题描述 上传同一个文件(32kb)有时候需要2s,但有时候需要11s,上传速度太不稳定,且太慢. 上传的过程是由前端上传文件到后端php(使用yii2框架)的接口,由php调qiniu的sdk上传方 ...

  6. H5 将html页面内容生成图片并上传至七牛

    小编最近在做项目时遇到一个问题,那就是,需要将html页面生成图片后并传给app客户端,至于为什么要传给客户端,自然是因为小编的这个项目是客户端中嵌入h5页面,故而需要和客户端内部交互.那么问题就来了 ...

  7. 如何定时备份数据库并上传七牛云

    前言: 这篇文章主要记录自己在备份数据库文件中踩的坑和解决办法. 服务器数据库备份文件之后上传到七牛云 备份数据库文件 在服务器根目录下 创建 /backup/qiniu/.backup.sh #!/ ...

  8. linux 备份mysql并上传_实现Linux中Mysql数据库自动备份并上传到远程FTP服务器

    这篇文章很有分享价值,因为我们在实际的生产环境中需要将数据库进行自动备份,然后上传到指定的位置,当然也可以像以下文章中所讲的一样,上传到你指定的FTP服务器中,从而实现Mysql数据库自动备份并上传到 ...

  9. 使用百度webuploader上传组件直接上传到七牛云表单上传

    上一节我们已经讲过了使用表单上传,这一节我们来讲一下使用webuploader来进行异步上传到七牛云服务器. 点击查看,七牛云表单上传 1.引入webuploader的js和样式表 2.写js代码 其 ...

最新文章

  1. 僵尸(bot)程序缓解
  2. BZOJ 1174: [Balkan2007]Toponyms
  3. 【跃迁之路】【738天】程序员高效学习方法论探索系列(实验阶段495-2019.2.28)...
  4. OpenCV 特征点检测
  5. 如何用 Nacos 构建服务网格生态
  6. HDU-2476 String painter 区间DP
  7. 简单java socket_基于Java Socket实现一个简易在线聊天功能(一)
  8. android gradle build process
  9. (软件工程复习核心重点)第一章软件工程概论习题
  10. 【BZOJ4458】GTY的OJ
  11. opengl 高级技巧
  12. 【ES】ES 好文档积累
  13. 东南亚本地商ERP仓储系统怎么样?
  14. 六大核心!突破自动驾驶和智慧交通的必由之路
  15. 利用THINKPHP框架开发的自定义表单及数据字典模板
  16. 用EasySysprep封装Win7系统
  17. 怎么抵抗DDOS攻击?
  18. 论文介绍--Spatio-Temporal Dynamics and Semantic Attribute Enriched Visual Encoding for Video Captioning
  19. 放大器电路在设计过程中常见问题分析及如何解决
  20. burp抓不到手机app请求包

热门文章

  1. 内聚的极限: 软件开发的不确定性原理
  2. fn:substring()函数
  3. 【47.92%】【hdu 5763】Another Meaning
  4. MySQL 关联表批量修改(数据同步)
  5. java web service简单示例
  6. 调整linux系统时区
  7. LeetCode--Sum Root to Leaf Numbers
  8. editplus 快捷键
  9. 【一周一算法】算法2:邻居好说话——冒泡排序
  10. ASP.NET下QueryString不同字符编码间强制转换的解决方案