定时备份 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
在七牛云控制台 > 个人中心 > 密钥管理内。
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
的其他详细功能使用,可自行参考其文档。
脚本内容
脚本中的数据库配置、日志文件、存放路径、<Bucket>
等需自行修改,并存在。database/$bakFile
,表示的是 <Key>
,即在七牛存储中的路径&文件名,可自定义。
脚本文件需可执行权限,然后可以执行脚本进行测试。
定时任务
如果定时任务未执行,可查看日志 /var/log/cron
排查问题,或者查看 crond
是否处于运行状态。