主页 > 知识库 > 定时备份 Mysql并上传到七牛的方法

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

热门标签:地方门户网站 网站排名优化 百度竞价排名 AI电销 呼叫中心市场需求 Linux服务器 服务外包 铁路电话系统

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

常见的 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并上传到七牛的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

您可能感兴趣的文章:
  • shell脚本实现mysql定时备份、删除、恢复功能
  • CentOS下mysql定时备份Shell脚本分享
  • MySQL定时备份方案(利用Linux crontab)
  • 浅析mysql 定时备份任务
  • MySQL定时备份数据库操作示例
  • MySQL数据库定时备份的实现方法
  • linux实现定时备份mysql数据库的简单方法
  • linux实现mysql数据库每天自动备份定时备份
  • Mysql数据库定时备份脚本分享
  • Windows下MySQL定时备份脚本的实现
  • mysql自动定时备份数据库的最佳方法(windows服务器)
  • 在Windows环境下使用MySQL:实现自动定时备份

标签:衡水 铜川 兰州 湖南 崇左 仙桃 湘潭 黄山

巨人网络通讯声明:本文标题《定时备份 Mysql并上传到七牛的方法》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266