作为一位站长,最伤心的莫过于数据库突然丢了,自然着过几次,数据库丢失,那叫一个心疼。数据作为当前网站运维的核心部分,拥有举足轻重的地位。无论是网站数据,还是数据库数据都是宝贵的财富,为了再次发生一键回到解放前的情况,自然研究了一下数据库自动备份到七牛云的方案。
为了保证数据的安全,我们先对数据进行了加密再传输到七牛对象存储,采用定时自动备份,可以解放双手,实现自动化运维。一次配置,长期受益。
配置MySQL————众所周知,基于linux操作系统的shell脚本语言是没有交互功能的,所以想用MySQL的MySQLdump备份数据库,首先就要解决这个问题
配置基础功能块
在home目录下创建一个 .my.cnf 文件,添加如下内容
- [root@VM_0_16_centos ~]# vim .my.cnf
- [mysqldump]
- user=root
- password=mysqlpassowrd
- [client]
- user=root
- password=mysqlpassowrd
不用重启mysql,每次登录MySQL的交互界面,只需键入mysql命令,即可默认将user, password的值根据~/.my.cnf中的内容传给mysql命令,进行mysql的登录操作。mysqldump也是同理,备份数据库就不用输入密码了。如下
配置对象存储————七牛云,阿里云,腾讯云,又拍云,都提供的有免费对象存储容量和流量,每家提供的上传工具都不一样,但也是大同小异。这里选用的是七牛云,申请账户、实名认证啥的,我就不提了。
这里直接开始部署七牛云在linux上的上传工具qshell
- yum -y install unzip wget
- wget http://devtools.qiniu.com/qshell-v2.2.0.zip
- unzip qshell-*.zip qshell-linux-x64
- mv qshell-linux-x64 /usr/lcoal/bin/qshell
- chmod +x /usr/lcoal/bin/qshell
- qshell -h
上面没有出现问题就可以配置七牛云账户的AK和SK了(AccessKey/SecretKey)
获取地址https://portal.qiniu.com/user/key
设置AK和SK的信息
- qshell account [AK] [sk]
在七牛云对象存储上创建一个存储空间,略~
qshell工具的详细用法可以去看官方文档,这里只介绍简单的上传命令(官方文档https://dwz.cn/ywMK6YO6)
- qshell fput <Bucket> <RemoteFile> <LocalFile>
- Bucket 七牛空间名称,可以为公开空间或私有空间
- RemoteFile 文件保存在七牛空间的名称
- LocalFile 本地文件的路径
七牛云相比我用过的其他家的对象存储服务比如百度云、腾讯云的,上传速度还是很慢的,下载速度差距不大。
配置定时脚本
基本配置完成,下面来配置定时脚本:
- #!/bin/bash
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- da_te=`date +%Y-%m-%d`
- mysql -se “show databases” > /tmp/databases_zheli.txt #获取MySQL里面的全部库
- for x in `cat /tmp/databases_zheli.txt`
- do
- cd /tmp/
- mysqldump “$x” > “$x”-“$da_te”.sql #导出数据库
- tar -zcf – “$x”-“$da_te”.sql|openssl des3 -salt -k bock549474| dd of=”$x”-“$da_te”.des3 #对导出来的数据库备份进行加密处理
- qshell fput bock “$x”-“$da_te”.des3 “$x”-“$da_te”.des3 #上传至七牛云
- rm -rf “$x”-“$da_te”.sql #删除未加密的sql文件
- done
代码由meleuo大佬编写
这里默认备份的就是全部数据库,若是不想这样可以在导出数据库名时用[ grep -V ]去掉不需要备份的库,这个加密后的des3文件需要在linux命令行下用如下命令解密。
- if=<文件名> |openssl des3 -d -k <密码> |tar zxf –
配置crontab定时任务:
- [root@localhost ]# crontab -e
- * 5 * * * /bin/bash <脚本路径> &> /dev/null #每天5点钟执行脚本
总结
数据文件的定时备份是一名合格运维人员应该必备的基础技能,这是运维安全的常规手段,是运维安全之道的一部分,分享来与大家一起学习。