mysql定时备份所需权限、shell脚本、OSS备份

一、创建mysql备份用户并赋予所需权限

1、管理员shell登录mysql

>mysql -u root -p
>看不到的密码

2、创建备份用户

 Mysql>insert into mysql.user(Host,User,Password) values("localhost","dayBackUser",password("dayBackUser"));

3、赋予用户相应权限

Mysql>grant SHOW DATABASES on *.* to "dayBackUser"@"localhost";//授予 SHOW DATABASES 权限

备份数据库需要大约四项权限

SELECT
SHOW DATABASES
RELOAD
LOCK TABLES

可以分别授予,也可以用逗号一次赋予

4、刷新权限

Mysql>flush privileges;

5、注意

mysql语句均需要分号结尾。

二、定时自动备份脚本

1、首先在某目录(如/data/bak/mysqlbackup.sh)下建立脚本

>vi /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 -7day  +"%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 -e

打开crontab编辑界面后增加一行,这段代码的意思是每天1点钟执行shell脚本,脚本内容指向上述编辑的脚本(定时参数请参阅crontab用法)

0 1 * * * /bin/bash /data/bak/mysqlbackup.sh

然后按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/50452/cn_zh/1493273499823/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。

    作者:王鑫,转载本文请保留

猜你喜欢

转载自blog.csdn.net/kk1946n/article/details/75138189