Cron定时任务 备份Mysql数据库并加密上传至七牛云

自然 2019年3月15日15:12:03 评论 231

作为一位站长,最伤心的莫过于数据库突然丢了,自然着过几次,数据库丢失,那叫一个心疼。数据作为当前网站运维的核心部分,拥有举足轻重的地位。无论是网站数据,还是数据库数据都是宝贵的财富,为了再次发生一键回到解放前的情况,自然研究了一下数据库自动备份到七牛云的方案。

Cron定时任务 备份Mysql数据库并加密上传至七牛云

为了保证数据的安全,我们先对数据进行了加密再传输到七牛对象存储,采用定时自动备份,可以解放双手,实现自动化运维。一次配置,长期受益。

配置MySQL————众所周知,基于linux操作系统的shell脚本语言是没有交互功能的,所以想用MySQL的MySQLdump备份数据库,首先就要解决这个问题

配置基础功能块

在home目录下创建一个 .my.cnf 文件,添加如下内容

  1. [root@VM_0_16_centos ~]# vim .my.cnf
  2. [mysqldump]
  3. user=root
  4. password=mysqlpassowrd
  5. [client]
  6. user=root
  7. password=mysqlpassowrd

不用重启mysql,每次登录MySQL的交互界面,只需键入mysql命令,即可默认将user, password的值根据~/.my.cnf中的内容传给mysql命令,进行mysql的登录操作。mysqldump也是同理,备份数据库就不用输入密码了。如下

Cron定时任务 备份Mysql数据库并加密上传至七牛云

配置对象存储————七牛云,阿里云,腾讯云,又拍云,都提供的有免费对象存储容量和流量,每家提供的上传工具都不一样,但也是大同小异。这里选用的是七牛云,申请账户、实名认证啥的,我就不提了。

这里直接开始部署七牛云在linux上的上传工具qshell

  1. yum -y install unzip wget
  2. wget http://devtools.qiniu.com/qshell-v2.2.0.zip
  3. unzip qshell-*.zip qshell-linux-x64
  4. mv qshell-linux-x64 /usr/lcoal/bin/qshell
  5. chmod +x /usr/lcoal/bin/qshell
  6. qshell -h

上面没有出现问题就可以配置七牛云账户的AK和SK了(AccessKey/SecretKey)

获取地址https://portal.qiniu.com/user/key
设置AK和SK的信息

  1. qshell account [AK] [sk]

Cron定时任务 备份Mysql数据库并加密上传至七牛云

在七牛云对象存储上创建一个存储空间,略~
qshell工具的详细用法可以去看官方文档,这里只介绍简单的上传命令(官方文档https://dwz.cn/ywMK6YO6)

  1. qshell fput <Bucket> <RemoteFile> <LocalFile>
  2. Bucket        七牛空间名称,可以为公开空间或私有空间
  3. RemoteFile        文件保存在七牛空间的名称
  4. LocalFile        本地文件的路径

Cron定时任务 备份Mysql数据库并加密上传至七牛云

七牛云相比我用过的其他家的对象存储服务比如百度云、腾讯云的,上传速度还是很慢的,下载速度差距不大。

配置定时脚本

基本配置完成,下面来配置定时脚本:

  1. #!/bin/bash
  2. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  3. da_te=`date +%Y-%m-%d`
  4. mysql -se "show databases" > /tmp/databases_zheli.txt #获取MySQL里面的全部库
  5. for x in `cat /tmp/databases_zheli.txt`
  6.   do
  7.     cd /tmp/
  8.       mysqldump  "$x" > "$x"-"$da_te".sql  #导出数据库
  9.       tar -zcf - "$x"-"$da_te".sql|openssl des3 -salt -k bock549474| dd of="$x"-"$da_te".des3   #对导出来的数据库备份进行加密处理
  10.       qshell fput bock "$x"-"$da_te".des3 "$x"-"$da_te".des3 #上传至七牛云
  11.       rm -rf "$x"-"$da_te".sql   #删除未加密的sql文件
  12.   done

代码由meleuo大佬编写

这里默认备份的就是全部数据库,若是不想这样可以在导出数据库名时用[ grep -V ]去掉不需要备份的库,这个加密后的des3文件需要在linux命令行下用如下命令解密。

  1. if=<文件名> |openssl des3 -d -k <密码> |tar zxf -

配置crontab定时任务:

  1. [root@localhost ]# crontab -e
  2. 5 * * * /bin/bash <脚本路径> &> /dev/null #每天5点钟执行脚本

总结

数据文件的定时备份是一名合格运维人员应该必备的基础技能,这是运维安全的常规手段,是运维安全之道的一部分,分享来与大家一起学习。

weinxin
网科文媒
快来关注一下,你想要的这里都有喔!
自然

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: