mysql数据库备份到oss_备份数据库并上传至阿里云OSS

下载OSS工具ossutil

wget http://gosspublic.alicdn.com/ossutil/1.5.0/ossutil64

#下载ossutil

chmod 755 ossutil64

#授权

cp ossutil64 /usr/local/bin/

#复制命令可以到bin目录下直接执行

ossutil64 config

#创建配置文件

该命令创建将一个配置文件,在其中存储配置信息。在此之前你需要在OSS创建一个相关的bucket,我的bucket名字叫做cnlive-mysql-bak

请输入配置文件路径(默认为:/home/user/.ossutilconfig,回车将使用默认路径。)

如需设置为其它路径,在使用命令时需要将--config-file选项设置为该路径.

对于下述配置,回车将跳过相关配置项的设置,配置项的具体含义,请使用"help config"命令查看。

请输入endpoint:http://oss-cn-shenzhen.aliyuncs.com

endpoint请参考oss访问域名

请输入accessKeyID:yourAccessKeyID

请输入accessKeySecret:yourAccessKeySecret

请输入stsToken:

accessKey等问题请参考阿里云AK创建

ossuti的所有使用问题,请参考 ossutil阿里云官方文档修改命令

编写脚本

Mysql 5.5版本

#!/bin/sh

#备份数据库到OSS

cd /data/mysqlbak #前往备份目录

echo "您处于数据库备份目录"

Now=$(date +"%d-%m-%Y") #获取当前日期

DB=databases #数据库名称

File=$DB-$Now.sql #字符串组合生成文件名

mysqldump -uroot -p123456 $DB > $File #备份主命令,此处的db是你要备份的数据库

echo "数据库备份完成"

SevenDays=$(date -d -7day +"%d-%m-%Y") #生成7天前的文件名,用于删除,可自行改为所需时长

if [ -f /data/mysqlbak/$DB-$SevenDays.sql ] #判断7天前的备份是否存在

then

rm -rf /data/mysqlbak/$DB-$SevenDays.sql #存在即删除

echo "您已删除7天前的备份文件"

else

echo "7天前的文件不存在 "

fi

ossutil64 cp /data/mysqlbak/*.sql oss://cnlive-mysql-bak/$DB/

#填写你的oss信息使用ossutil64命令将其cp到OSS上

echo "您数据库备份已上传至阿里云OSS"

MySQL 5.6以上版本

设置免密登录

因为MySQL5.6以上版本如果使用密码需要在执行命令后的提示输入里输入密码,或者在指定的安全文件内指定密码,不能在-p后面直接追加密码

所以这里我们会使用到mysql_config_editor这个工具

mysql_config_editor是MySQL5.6.6以后版本的工具。这个工具可以认证信息加密存储在.mylogin.cnf中,通常这个文件在Linux用户的家目录,当然password信息是加密的,无需担心泄露问题

mysql_config_editor set --login-path=[认证信息名] user=[用户名] --password

#认证信息名是该条认证信息的名称,后续登录时直接使用认证信息名即可登录,无需再次输入密码。

#这里需要注意的是密码里面不能含有特殊字符,建议创建一个新的用户来进行备份操作

mysql --login-path=[认证信息名]

#直接使用认证信息名来登录

73b75afb77dc?from=timeline

image.png

修改mysqldump命令的相关参数

免密登录成功,接下来就是修改脚本中mysqldump命令的相关参数改为免密登录模式

#!/bin/sh

#备份数据库到OSS

cd /data/mysqlbak #前往备份目录

echo "您处于数据库备份目录"

Now=$(date +"%d-%m-%Y") #获取当前日期

DB=databases #数据库名称

File=$DB-$Now.sql #字符串组合生成文件名

mysqldump --login-path=[认证信息名] $DB > $File #备份主命令,此处的db是你要备份的数据库,使用--login-path参数免密登录

echo "数据库备份完成"

SevenDays=$(date -d -7day +"%d-%m-%Y") #生成7天前的文件名,用于删除,可自行改为所需时长

if [ -f /data/mysqlbak/$DB-$SevenDays.sql ] #判断7天前的备份是否存在

then

rm -rf /data/mysqlbak/$DB-$SevenDays.sql #存在即删除

echo "您已删除7天前的备份文件"

else

echo "7天前的文件不存在 "

fi

ossutil64 cp /data/mysqlbak/*.sql oss://cnlive-mysql-bak/$DB/

#填写你的oss信息使用ossutil64命令将其cp到OSS上

echo "您数据库备份已上传至阿里云OSS"

写入定时任务

mkdir /data/mysqlbak

#创建脚本中需要用到的文件夹

crontab -e

0 1 * * * /bin/bash /root/mysqlbackup.sh

有错请指出,不喜勿喷,不接受喷我小白,虽然这是事实,如果要喷请预约

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值