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

(0)

相关推荐

  • linux实现mysql数据库每天自动备份定时备份

     概述 备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程.而对于一些网站.系统来说,数据库就是一切,所以做好数据库的备份是至关重要的! 备份是什么? 为什么要备份 容灾方案建设 存储介质 光盘 磁带 硬盘 磁盘阵列 DAS:直接附加存储 NAS:网络附加存储 SAN:存储区域网络 云存储 这里主要以本地磁盘为存储介质讲一下计划任务的添加使用,基本的备份脚本,其它存储介质只是介质的访问方式可能不大一样. 1.

  • MySQL定时备份之使用Linux下的crontab定时备份实例

    1. Mysql备份某个数据库的命令 复制代码 代码如下: ##################################################################  # 备份某个数据库  ################################################################## # root 用户,创建备份目录  mkdir -p /usr/local/cncounter/mysql_dump  cd /usr/local/

  • 定时备份mysql, 定时切割nginx access log的方法

    定时备份mysql 放入 /etc/cron.hourly/ 复制代码 代码如下: #!/bin/bash DUMP=/usr/local/webserver/mysql/bin/mysqldump OUT_DIR=/data1/backup/ DB_NAME=数据库名 DB_USER=数据库用户 DB_PASS=数据库密码 #How much days backup most DAYS=3 #12 hours ago MINS=720 #Core of script cd $OUT_DIR D

  • 在Windows环境下使用MySQL:实现自动定时备份

    一.编写备份脚本 rem auther:www.yumi-info.com rem date:20171222 rem ******MySQL backup start******** @echo off forfiles /p "E:\mysql\MySQL BackUp" /m backup_*.sql -d -30 /c "cmd /c del /f @path" set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%0

  • Linux shell实现每天定时备份mysql数据库

    每天定时备份mysql数据库任务,删除指定天数前的数据,保留指定天的数据: 需求:   1,每天4点备份mysql数据:   2,为节省空间,删除超过3个月的所有备份数据:   3,删除超过7天的备份数据,保留3个月里的 10号 20号 30号的备份数据: #创建shell文件 vim backup_mysql.sh mysqldump -uroot -p123456 --all-databases > /data/dbdata/mysqlbak/`date +%Y%m%d`.sql find

  • mysql自动定时备份数据库的最佳方法(windows服务器)

    网上有很多关于window下Mysql自动备份的方法,可是真的能用的也没有几个,有些说的还非常的复杂,难以操作. 我们都知道mssql本身就自带了计划任务可以用来自动备份,可是mysql咱们要怎么样自动有备份呢? 教大家一个最简单的方法. 这个方法是用bat批处理来完成的. 假想环境:MySQL 安装位置:D:\Program Files\MySQL\MySQL Server 5.0\data 如图: 数据库名称为:952game数据库备份目的地:d:\db_bak\ (你想把数据库备份到哪个盘

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

    多数应用场景下,我们需要对重要数据进行备份.并放置到一个安全的地方,以备不时之需. 常见的 MySQL 数据备份方式有,直接打包复制对应的数据库或表文件(物理备份).mysqldump 全量逻辑备份.xtrabackup 增量逻辑备份等. 常见的数据存储方式有,本机存储.FTP 上传到远程服务器.云存储(如阿里云OSS.七牛云存储等).甚至本地也行. 我们可能不想每次都手动去备份,也不想每次都那么耗时间的去下载,也不想就放在服务器上丢了,因为我们需要异地备份.那我们可以尝试,写个脚本定时备份数据

  • 将 vue 生成的 js 上传到七牛的实例

    一般 vue 的项目,大家都是直接把最后生成的 css js 等文件直接上传到服务器,并没有才有 cdn 的业务 这样做一般有2个弊端, 增加服务器带宽压力,访问量一旦上去,服务器就可能因为带宽压力挂掉 部分地区访问速度会变慢 不过虽然知道归知道,但是每次都手动把 js css 文件传到七牛上很累的. 尤其是在改动频繁的情况下,上传七牛每次上传七牛 cdn 很浪费时间. 于是就去找七牛的文档,决定用脚本来解决这个问题,我是用的 python sdk 实现得. python 环境请自行安装 首先下

  • PHP实现Markdown文章上传到七牛图床的实例内容

    在使用 Markdown 编写文章之后,经常需要发布到不同的平台,这里会遇到一个问题,文章的图片需要手动的进行上传,管理起来非常不方便,因此,强烈建议将图片统一上传到图床中,这样的话一篇文章就可以轻松的同步到各大平台上面了.下面,用 PHP 来实现该功能,选用 七牛云 作为图床 创建并进入项目 $ mkdir markdown-images-to-qiniu $ cd markdown-images-to-qiniu 安装七牛官方的扩展 $ composer require qiniu/php-

  • node koa2实现上传图片并且同步上传到七牛云存储

    因为升级到新的node版本,之前的通过很多上传图片的方式都已经不适用了,所以自己就写了一个对于 koa2上传图片的小demo,记录一下心得. 废话不多说,下面直接上代码,里面都有注释. const Koa = require('koa'); const route = require('koa-route'); const serve = require('koa-static'); const inspect = require('util').inspect const path = req

  • Python的Django中将文件上传至七牛云存储的代码分享

    最近在写的一个django小项目需要实现用户上传图片的功能,使用到了七牛云存储,特此记录下来.这里我使用的七牛python SDK 版本是7.0.3,函数使用上可能会与旧版有些不同. 原本文件上传需要先把文件上传到自己的业务服务器,再从业务服务器上传到云存储.现在七牛的表单上传可以直接把文件上传到七牛,不再需要业务服务器的中转,节省了流量成本,降低了业务服务器的压力.而且通过设置,还可以在文件上传完成后让客户端自动重定向到一个上传成功的结果页面.这里我就是使用了七牛的表单上传. 表单上传 用户上

  • Node定时备份MySQL的实现

    目录 前言 开发部署 安装依赖 编写代码 pm2部署 结语 前言 前段时间发生了一件令我哭笑不得的事,部署在 Centos 服务器上的项目,因为需要重新上传· 部署,所以我执行了下面一段命令: rm -rf /* 当我按下回车之后,发现终端闪过的一行行代码,突然感觉事情并不简单,情急之下,赶紧 ctrl c 中断终端,中断之后,便开始通过 fpt 上传文件,却发现 ftp 毫无反应,这下慌了,不会把系统给干没了吧! 接下来我决定 重启 服务器,可是,emmm...,启动不了了!真的把系统给干没了

  • linux定时备份mysql并同步到其它服务器

    数据在任何一家公司里面都是最核心的资产,定期备份则是为了保证数据库出现问题的时候能够及时回滚到最近的备份点,将损失缩小到最小 这篇文章将会两部分来说明: 1.mysql的定期备份: 2.同步到其它服务器 mysql 备份 备份还原某个数据库 备份还原 # 导出数据库 /usr/bin/mysqldump -u root -ppwd database > database20160929.sql # 导入数据库 mysql -u root -p database < database201609

  • PHP定时备份MySQL与mysqldump语法参数详解

    先来为大家介绍几个MySQL备份命令mysqldump常用操作实例: 1.mysqldump备份 只导出表结构 d:/PHP/xampp/mysql/bin/mysqldump -h127.0.0.1 -P3306 -uroot -p123456 snsgou_sns_test --no-data --default_character-set=utf8 > d:/Python/data/snsgou_sns_test_table.sql mysqldump只导出数据 d:/PHP/xampp/

  • shell脚本定时备份MySQL数据库数据并保留指定时间

    公司用到的MySQL数据库,经常有同事通过一顿骚操作把一些关键的配置数据误删,每次恢复都要花上不少时间,于是写了个shell脚本,结合corntab每天凌晨备份数据库,并保留7天. 同样的备份脚本也可用于生产环境MySQL数据库定时备份. 环境:CentOS 7.5 / MySQL 5.7 #!/bin/sh # 数据库账号信息 DB_USER="root" DB_PWD="root" DB_HOST="127.0.0.1" DB_PORT=&q

随机推荐