定时备份 Mysql并上传到七牛的方法

 更新时间:2018年10月10日 13:16:40   作者:舆图易稿  
常见的 MySQL 数据备份方式有,直接打包复制对应的数据库或表文件(物理备份)、mysqldump 全量逻辑备份、xtrabackup 增量逻辑备份等。这篇文章主要介绍了定时备份 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 在七牛云控制台 > 个人中心 > 密钥管理内。
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点执行备份脚本
* 2 * * * /opt/backup/baksql.sh

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

总结

以上所述是小编给大家介绍的定时备份 Mysql并上传到七牛的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • MySQL 数据库 增删查改、克隆、外键 等操作总结

    MySQL 数据库 增删查改、克隆、外键 等操作总结

    这篇文章主要介绍了MySQL 数据库 增删查改、克隆、外键 等操作,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • MySQL触发器实现两表数据同步的代码详解

    MySQL触发器实现两表数据同步的代码详解

    在数据库应用中,我们经常需要对数据进行某些操作,并在操作完成后进行相应的处理,这时候,可以使用触发器来实现这些功能,MySQL提供了强大的触发器功能,本文将给大家详细介绍MySQL触发器实现两表数据同步,需要的朋友可以参考下
    2023-12-12
  • MySQL 索引的优缺点以及创建索引的准则

    MySQL 索引的优缺点以及创建索引的准则

    这篇文章主要介绍了MySQL 索引的优劣以及创建索引的准则,帮助大家更好的理解和使用MySQL 索引,感兴趣的朋友可以了解下
    2020-09-09
  • MySQL创建用户的三种方法

    MySQL创建用户的三种方法

    在对MySQL的日常管理和操作中,为了避免有人恶意使用root用户控制数据库,尽可能地不用或少用 root 用户登录系统,本文主要介绍了MySQL创建用户的三种方法,感兴趣的可以了解一下
    2023-08-08
  • mYsql日期和时间函数不求人

    mYsql日期和时间函数不求人

    mYsql日期和时间函数不求人...
    2007-04-04
  • MySQL中执行计划explain命令示例详解

    MySQL中执行计划explain命令示例详解

    这篇文章主要给大家介绍了关于MySQL中执行计划explain命令的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用explain命令具有一定的参考学习价值,需要的朋友们下面说来一起学习学习吧
    2018-05-05
  • mysql生成随机字符串函数分享

    mysql生成随机字符串函数分享

    这篇文章主要介绍了mysql生成随机字符串函数分享,本文直接给出实现代码,需要的朋友可以参考下
    2015-02-02
  • mysql格式化小数保留小数点后两位(小数点格式化)

    mysql格式化小数保留小数点后两位(小数点格式化)

    今天遇到一个问题,格式化浮点数的问题,用format(col,2)保留两位小数点,出现一个问题,例如下面的语句,后面我们给出解决方法
    2013-12-12
  • Mysql 5.5.56版本(二进制包安装)自定义安装路径步骤记录

    Mysql 5.5.56版本(二进制包安装)自定义安装路径步骤记录

    这篇文章主要介绍了Mysql 5.5.56版本(二进制包安装)自定义安装路径步骤记录,需要的朋友可以参考下
    2017-07-07
  • mysql 数据类型转换的实现

    mysql 数据类型转换的实现

    这篇文章主要介绍了mysql 数据类型转换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02

最新评论