一、创建mysql备份用户并赋予所需权限
1、管理员shell登录mysql
>mysql -u root -p
>看不到的密码
2、创建备份用户
Mysql>insert into mysql.user(Host,User,Password) values("localhost","dayBackUser",password("dayBackUser"));
3、赋予用户相应权限
备份数据库需要大约四项权限
SELECT
SHOW DATABASES
RELOAD
LOCK TABLES
可以分别授予,也可以用逗号一次赋予
4、刷新权限
Mysql>flush privileges;
5、注意
mysql语句均需要分号结尾。
二、定时自动备份脚本
1、首先在某目录(如/data/bak/mysqlbackup.sh)下建立脚本
2、按a键输入(vi使用方法请自行查阅,鄙人使用xshell,粘贴快捷键是shift+insert)
脚本内容如下:
#!/bin/sh
cd /data/bak #前往备份目录
echo "You are in bakmysql directory"
Now=$(date +"%d-%m-%Y") #获取当前日期
File=bakmysql-$Now.sql #字符串组合生成文件名
mysqldump -u dayBackUser -p dayBackUser db > $File #备份主命令,此处的db是你要备份的数据库
echo "Your database backup successfully completed"
SevenDays=$(date -d -day +"%d-%m-%Y") #生成7天前的文件名,用于删除,可自行改为所需时长
if [ -f /data/bak/bakmysql-$SevenDays.sql ] #判断7天前的备份是否存在
then
rm -rf /data/bak/bakmysql-$SevenDays.sql #存在即删除
echo "You have delete 7days ago bak file "
else
echo "7days ago bak file not exist "
fi
注意:“#”后的文字为注释,可自行删除
3、赋予脚本执行权限,执行
在命令行输入以下命令,会自行备份
>chmod +x /data/bak/mysqlbackup.sh
>./mysqlbackup.sh
4、定时备份
使用linux(本人用centos)自带的crontab进行定时备份
打开crontab编辑界面后增加一行,这段代码的意思是每天1点钟执行shell脚本,脚本内容指向上述编辑的脚本(定时参数请参阅crontab用法)
然后按Esc键后输入wq并按回车即可保存(参考vi编辑命令)
三、阿里云oss上传
1、自行注册阿里云账号并开通OSS服务
在OSS中自行建立bucket,名称自定义,如mysqlback-bucket
注意:在选区时,建议选择与ecs同区域的oss,这样可以走内网流量
内网两个好处①免费②速度飞快(说是不限速,实测峰值100M/s),实在不行可以选择走oss外网域名
2、申请Access Key
如图操作
注意保存您获取到的key和secret
3、下载ossutil工具
这个linux程序很好用,只需简单的命令即可操作bucket,object(oss名词,请自行参阅文档)
在命令行输入以下命令获取工具
>cd ~
~>wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach//cn_zh//ossutil
本文示例ossutil存储在~/目录下
之后赋予执行权限
~>chmod +x ossutil
配置ossutil
~>./ossutil config -e oss.aliyuncs.com -i accessKey -k accessSecret
前往
https://help.aliyun.com/document_detail/31837.html
查看oss的数据中心,替换命令中的
oss.aliyuncs.com
,如果您的ecs和oss在同一区域可选用内网地址,命令中的accessKey/accessSecret替换为图片中的值,这样工具就配置好了。
ossutil的上传指令为:
上传单文件
>./ossutil cp a.txt oss://ossbucket
上传文件夹
>./ossutil cp -r dir oss://ossbucket/dir/
通过阿里云提供的ossutil工具可以方便的进行文件的上传/下载/删除以及更多操作,因为这个工具在shell中执行,所以可以直接写在上边的脚本文件结尾,把数据库文件直接上传到oss中备份。
相应的,我们可以写脚本定义备份网站程序,只需要把脚本中的数据库备份替换为tar压缩命令即可。
注:本文所有命令和代码,是在centos7.3 64位环境中执行,mysql版本位5.6。
作者:王鑫,转载本文请保留