美文网首页
备份数据库并上传至阿里云OSS

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

作者: 辛晓坤Vincent | 来源:发表于2019-03-21 16:31 被阅读0次

    下载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=[认证信息名]
    #直接使用认证信息名来登录
    
    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
    

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

    相关文章

      网友评论

          本文标题:备份数据库并上传至阿里云OSS

          本文链接:https://www.haomeiwen.com/subject/dzrcvqtx.html