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

常见的 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 在七牛云控制台 > 个人中心 > 密钥管理内。

qshell account ak sk

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

我们这里用的 qshell 命令是 rput,即以分片上传的方式上传一个文件,使用文档: https://github.com/qiniu/qshell/blob/master/docs/rput.md

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/mysqldump-put-qiniu/

定时备份 MySQL 并上传到七牛的更多相关文章

  1. 使用PHP把图片上传到七牛

    先从官网下载SDK,然后新建一个文件,里面包括上传,下载,删除 <?php header("Content-Type:text/html; charset=utf8"); r ...

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

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

  3. Java进阶学习:将文件上传到七牛云中

    Java进阶学习:将文件上传到七牛云中 通过本文,我们将讲述如何利用七牛云官方SDK,将我们的本地文件传输到其存储空间中去. JavaSDK:https://developer.qiniu.com/k ...

  4. Chrome插件-把网页图片上传到七牛空间一

    功能:图片上右键,点击上传图片到七牛,把图片上传的指定空间并返回图片URL. Chrome插件本质就是js代码,但是里面有一些限制,比如事件绑定等和普通js的绑定是有区别的,主要是为了安全性考虑. 做 ...

  5. Flask实战第55天:cms轮播图上传到七牛功能完成

    登录七牛云,进入“对象存储”, 新建存储空间(Bucket), 我创建的空间命名为flask-bbs 创建完Bucket,七牛会给我们提供一个测试域名,生产环境中,我们需要绑定自己的域名 在个人面板中 ...

  6. 纯Delphi 原生写的 上传到七牛的功能

    上传文件到七牛, 支持分片分段上传, 适用于Delphi XE, 10等新版本 分两个函数: uploadToQiniu 和 directUploadToQiniu uploadToQiniu 这个函 ...

  7. 一百三十五:CMS系统之UEditoe编辑器集成以及配置将图片上传到七牛

    富文本编辑框,选择UEditor 下载地址:http://ueditor.baidu.com/website/download.html 使用说明:http://fex.baidu.com/uedit ...

  8. Tp3.1 文件上传到七牛云

    TP3.1 中不支持Composer 就无法用composer 安装 下载历史的SDK https://github.com/qiniu/php-sdk/releases/tag/v7.0.8 下载下 ...

  9. tp5 webupload文件上传至七牛云

    1:composer安装: composer require qiniu/php-sdk 2: 配置使用: 在tp5.1的配置文件app.php中配置七牛云的参数 'qiniu' => [ 'a ...

随机推荐

  1. abaqus修改inp直接建立工程

    前面已经知道,通过修改以下inp的节点和单元编号,就可以新建模型,可是对于大的工程来说,逐个选取单元进行添加材料以及确定哪步进行填土仍是比较麻烦的(如果工程网格划分好并告知哪些单元好属于哪些材料,哪些 ...

  2. 安装mysqlclient的时候出现Microsoft Visual C++ 14.0 is required报错

    在安装mysqlclient的时候出现了以下报错: 解决办法: 1.到提示网址:https://visualstudio.microsoft.com/download/里面下载对应VC++版本安装后继 ...

  3. C pointer again …

    记录一个比较基础的东东…… C 语言的指针,一直让人又爱又恨,爱它的人觉得它既灵活又强大,恨它的人觉得它太过于灵活太过于强大以至于容易将人绕晕.最早接触 C 语言,还是在刚进入大学的时候,算起来有好些 ...

  4. Robust Influence Maximization

    一.   研究背景 在社会和经济网络中,影响最大化问题在过去十年中得到广泛的研究,由于其广泛应用于病毒式营销[1,2],突破检测[3],谣言监测[4]等.例如公司可以通过向初始用户(称为种子)发送免费 ...

  5. Appium之xpath定位元素

    原文:http://www.cnblogs.com/cnkemi/p/9180525.html appium也是以webdriver为基的,对于元素的定位也基本一致,只是增加一些更适合移动平台的独特方 ...

  6. Leetcode(一)两数之和

    1.两数之和 题目要求: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重 ...

  7. git的命令行操作

    1.初始化本地的git仓库git init,代码存放在这里,git会自动对我们的代码进行管理备份. 2.设置用户信息,设置用户名:git config --global user.name " ...

  8. 我的C#跨平台之旅(四):使用AOP(filter、attribute)进行系统增强

    1.使用OData提速REST API开发 引入NuGet包:Microsoft.AspNet.WebApi.OData 在启动类中添加如下配置(示例为全局配置,也可基于Controller或Acti ...

  9. spring 排除指定的类或者包扫描

    <!-- 排除Controller注解的扫描 --> <context:component-scan base-package="exampleBean"> ...

  10. orcale mysql基本的分页查询法

    orcale分页查询sql语句: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNU ...