1. 环境配置

要将本地文件上传到阿里云oss中, 必须使用阿里云提供的工具 ossutil, 有32位,也有64位的, Linux和Windows都有.具体可以到阿里云官网下载

官网及文档: https://helpcdn.aliyun.com/document_detail/120075.html?spm=a2c4g.11186623.2.45.637b1c7aEqbumo

本文以Linux系统为例:

下载工具:
wget http://gosspublic.alicdn.com/ossutil/1.6.7/ossutil64
修改文件执行权限:
chmod 755 ossutil64
使用交互式配置生成配置文件:
./ossutil64 config

该命令将创建一个配置文件,在其中存储配置信息。
请输入配置文件路径(默认为:/home/user/.ossutilconfig,回车将使用默认路径。如果用户设置为其它路径,在使用命令时需要将--config-file选项设置为该路径):
未输入配置文件路径,将使用默认配置文件:/home/user/.ossutilconfig。
对于下述配置,回车将跳过相关配置项的设置,配置项的具体含义,请使用"help config"命令查看。
请输入endpoint:http://oss-cn-hangzhou.aliyuncs.com
请输入accessKeyID:yourAccessKeyID
请输入accessKeySecret:yourAccessKeySecret
请输入stsToken:
endpoint:填写Bucket所在地域的域名信息,可参考访问域名和数据中心。
accessKeyID:查看方式请参考创建AccessKey。
accessKeySecret:查看方式请参考创建AccessKey。
stsToken:非必配项,若采用STS临时授权方式访问OSS需要配置该项,否则置空即可。stsToken生成方式参考临时访问凭证。
说明 更详细的配置文件说明可参考 https://helpcdn.aliyun.com/document_detail/120072.html?spm=a2c4g.11186623.2.21.409c448ahCrIHZ#concept-303826 。

配置完成后,可以用如下命令进行测试:

ossutil64 cp /etc/fatab oss://aliyunoss-backup/DB_DATA/

# aliyunoss-backup 为我的oss Bucket名称.DB_DATA为数据库备份目录.

如果你在第一步输入了 config file path, 执行上传命令的时候必须要加上指定的 config file path, 否则到默认的地方/root/.ossutilconfig是找不到的.如:

ossutil64 cp /etc/fatab oss://aliyunoss-backup/DB_DATA/ --config-file=/path to config file/filename

2. 配置示例

说明, 如下脚本是本人用的备份MySQL数据库并上传到阿里云oss存储.

 #!/bin/bash
# mysql_backup.sh: backup mysql databases and keep newest days backup.
#
# ${db_user} is mysql username
# ${db_password} is mysql password
# ${db_host} is mysql host
# —————————–
#/root/mysql_backup.sh
# everyday : AM execute database backup
# * * * /root/mysql_backup_to_oss.sh
#/etc/cron.daily # the directory for story your backup file. #
backup_dir="/opt/backup/mysql/" # 要备份的数据库名 #
all_db="mydb1 mydb2 mydb3" # 要保留的备份天数 #
backup_day= #数据库备份日志文件存储的路径
logfile="/var/log/mysql_backup.log" # Aliyun OSS Bucket Name.
bucket_name=aliyunoss-backup # local IP address
local_ip=`hostname -i` # date format for backup file (dd-mm-yyyy) #
time="$(date +"%Y-%m-%d")" # mysql, ${mysqldump} and some other bin's path #
mysql="/usr/bin/mysql"
mysqldump="/usr/bin/mysqldump" # the directory for story the newest backup #
test ! -d ${backup_dir} && mkdir -p ${backup_dir} #备份数据库函数#
mysql_backup()
{
# 取所有的数据库名 #
for db in ${all_db}
do
backname=${db}.${time}
dumpfile=${backup_dir}${backname} #将备份的时间、数据库名存入日志
echo "------"$(date +'%Y-%m-%d %T')" Beginning database "${db}" backup--------" >>${logfile}
${mysqldump} --login-path=my3306 ${db} > ${dumpfile}.sql >>${logfile} >& #开始将压缩数据日志写入log
echo $(date +'%Y-%m-%d %T')" Beginning zip ${dumpfile}.sql" >>${logfile} #将备份数据库文件库压成ZIP文件,并删除先前的SQL文件. #
tar -czvf ${backname}.tar.gz ${backname}.sql >& && rm ${dumpfile}.sql >>${logfile} >& #将压缩后的文件名存入日志。
echo "backup file name:"${dumpfile}".tar.gz" >>${logfile}
echo -e "-------"$(date +'%Y-%m-%d %T')" Ending database "${db}" backup-------\n" >>${logfile}
done
} delete_old_backup()
{
echo "delete backup file:" >>${logfile}
# 删除旧的备份 查找出当前目录下七天前生成的文件,并将之删除
find ${backup_dir} -type f -mtime +${backup_day} | tee delete_list.log | xargs rm -rf
cat delete_list.log >>${logfile}
} upload_backups_toAliyunOSS()
{
# upload backfile to Aliyun OSS bucket
for db in ${all_db}
do
backname=${db}.${time}
echo "upload ${backname}.tar.gz to AliyunOSS begin at "$(date +'%Y-%m-%d %T') >>${logfile}
### Upload to AliyunOSS by storage Monthly ###
ossutil64 cp ${backname}.tar.gz oss://${bucket_name}/DB_DATA/$(date +'%Y%m')/${local_ip}/ -f
echo "upload ${backname}.tar.gz to AliyunOSS done at "$(date +'%Y-%m-%d %T') >>${logfile}
done
} #进入数据库备份文件目录
cd ${backup_dir} mysql_backup
delete_old_backup
upload_backups_toAliyunOSS echo -e "========== mysql backup && upload_to_AliyunOSS done at "$(date +'%Y-%m-%d %T')" ==========\n\n">>${logfile}
#cat ${logfile}

MySQL备份脚本(压缩并上传到阿里云OSS)

OSS中存储格式:

备份日志:

3. MySQL认证登录配置

在上述脚本中使用到了MySQL认证登录, 使用mysql_config_editor工具提前配置好MySQL的认证登录.

mysql_config_editor是在MySQL-5.6以后提供的, 这个工具可以认证信息加密存储在.mylogin.cnf中,通常这个文件在Linux用户的家目录,当然password信息是加密的,无需担心泄露问题, 当然也不需要每次登录都输入密码, 更不用讲密码写入脚本或配置文件中, 登录MySQL只需要使用认证信息登录即可. 在一定程度上保障了数据库的安全.

mysql_config_editor使用方法:

mysql_config_editor set --login-path=[认证信息名] user=[用户名] --password
#认证信息名是该条认证信息的名称,后续登录时直接使用认证信息名即可登录,无需再次输入密码。
#这里需要注意的是密码里面不能含有特殊字符,建议创建一个新的用户来进行备份操作
mysql --login-path=[认证信息名]
#直接使用认证信息名来登录

如:

mysql_config_editor set --login-path=my3306 --user=root --socket=/opt/mysql/mysql.sock --password

输入密码后,就建立了认证信息文件my3306, 下次登录MySQL数据库, 就不用输入密码了,使用如下命令即可免密登录mysql:

mysql --login-path=my3306

MySQL备份:
mysqldump --login-path=my3306 py3db > py3db.sql

无需输入MySQL密码, 即可执行命令.

备份MySQL数据库并上传到阿里云OSS存储的更多相关文章

  1. 前端(react)上传到阿里云OSS存储 实例

    需求背景 由于现有的后台管理系统,上传的视频越来越大,加上上传视频较慢,后端小哥提出直接从前端上传视频或者其他文件到阿里云OSS存储. 阿里云OSS 阿里云OSS文档介绍,这里不做过多赘述 安装 原本 ...

  2. Linux下自动备份MySQL数据库并上传到远程FTP服务器

    Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本 说明:  1.备份MySQL数据库存放目录/var/lib/mysql下面的xshelldata数据库 ...

  3. Windows环境下用C#编程将文件上传至阿里云OSS笔记

    Windows环境下用C#编程将文件上传至阿里云OSS笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/detai ...

  4. Java下载https文件上传到阿里云oss服务器

    Java下载https文件上传到阿里云oss服务器 今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路. 一共两个类: 1 .实现自己的证书信任管理器类 /** ...

  5. Linux本地数据上传到阿里云OSS

    这篇文章主要是介绍如何将服务器本地的数据上传到阿里云OSS的指定bucket中,最重要的参考文档是数据迁移单机部署.我第一次上传数据到OSS上时,步骤要比前面的链接中介绍的要麻烦,ossimport工 ...

  6. C# .net Ueditor实现图片上传到阿里云OSS 对象存储

    在学习的时候,项目中需要实现在Ueditor编辑器中将图片上传到云储存中,老师演示的是上传到又拍云存储,既然看了一遍,直接照搬不算本事,咱们可以依葫芦画瓢自己来动手玩玩其它的云存储服务. 现在云计算产 ...

  7. ThinkPHP 文件上传到阿里云OSS上(干货)

    参考:http://www.thinkphp.cn/extend/789.html 1.前往阿里云github下载SDK包:https://github.com/aliyun/aliyun-oss-p ...

  8. django 文件上传(阿里云oss)下载(支持大文件下载)

    1.文件上传 Models 设计 class Upload_File(models.Model): image = models.FileField(upload_to='file/%Y/%m',de ...

  9. egg-multipart + el-upload 实现带参图片上传至阿里云OSS

    egg-multipart有两种模式:file和stream el-upload参数传递有两种方式:利用自带参数data和手动添加参数 egg-multipart介绍 一.file 模式下的带参传递 ...

随机推荐

  1. js复制json对象

    var newJson = JSON.parse(JSON.stringify(json对象));

  2. idea导入eclipse包乱码问题全局解决方案:

    IJ导入eclipse包乱码问题: 全局解决方案: 设置所在文件夹位置 1.从eclipse导入方式,发现还是乱码 2.导航栏点击文件->设置->editor->文件编码 将所在文件 ...

  3. [转帖]五分钟彻底搞懂你一直没明白的Linux内存管理

    五分钟彻底搞懂你一直没明白的Linux内存管理 https://cloud.tencent.com/developer/article/1462476 现在的服务器大部分都是运行在Linux上面的,所 ...

  4. vim 常用命令总结(排版精良,内容优质)

    1. 格式说明 <xxx>:尖括号的含义表示这是一个占位参数,也就是必须有的参数,实际输入的内容是 xxx [xxx]:方括号的含义表示这是一个可选参数,也就是可有可无,实际输入的内容是 ...

  5. PAT(B) 1093 字符串A+B(Java和C)

    题目链接:1093 字符串A+B (20 point(s)) 题目描述 给定两个字符串 A 和 B,本题要求你输出 A+B,即两个字符串的并集.要求先输出 A,再输出 B,但重复的字符必须被剔除. 输 ...

  6. C#压缩和解压文件

    这里用两种方法实现C#压缩和解压文件 1.使用System.IO.Compression名称空间下的相关类(需引用 System.IO.Compression.FileSystem和System.IO ...

  7. SQL Server存储过程中字符串前加N的含义

    使用方法: N'字符串' 解释: 意思为后面的数据类型为NChar或者NVarchar 使用N前缀 在服务器上执行的代码中(例如在存储过程和触发器中)显示的Unicode字符串常量必须以大写字母N为前 ...

  8. 基于【 SpringBoot】一 || QQ授权流程

    一.准备工作 1.qq开放平台应用申请,获取APP ID和APP Key 2.qq开放平台配置回调地址 二.服务器端生成授权链接 1.请求地址 https://graph.qq.com/oauth2. ...

  9. [LeetCode] 234. 回文链表 ☆(翻转链表)

    描述 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2输出: false示例 2: 输入: 1->2->2->1输出: true 进阶:你能否用 O(n) 时间复杂 ...

  10. ASP.NET使用window.event.keycode来获取按下的键盘值!

    window.event.keycode-获取按下的键盘值 这里只列出了一些较常用的键盘值更加详细的键盘值请访问此人博客:https://www.cnblogs.com/z-sm/p/3597592. ...