Linux定时备份数据库到阿里云oss

说明

开发和测试数据由于种种原因,可能存在误删可能性,现在需要定期备份数据到阿里云的OSS。

因为数据本身数据量就很少,可以使用,如果数据库已经大于100M了,不建议使用这个方法(除非是内网)

下载和安装工具

参考:https://help.aliyun.com/document_detail/120075.html?spm=5176.8465980.0.dexternal.4e70145033NzD9#concept-303829

下载

wget http://gosspublic.alicdn.com/ossutil/1.7.1/ossutil64
chmod 755 ossutil64

配置

./ossutil64 config

根据提示完成配置,设置Endpoint、AccessKey等参数。

在这里插入图片描述

上传文件 cp

我们主要使用这个工具完成上传文件的需求。

示例:./ossutil cp examplefile.txt oss://mysqlbup/20200218/

删除文件

我们需要删除超过7天的文件信息

示例:./ossutil rm oss://mysqlbup/20200218/ -r

python脚本

使用python完成定时脚本的编辑

import logging
import os
import time

logging.basicConfig(level=logging.NOTSET)


class MySqlBp:
    def __init__(self):
        self.temp_dir = '~/backup/'
        self.bucket_name = 'mysqlbup'
        self.db_name = ['horizon_dev', 'horizon_prod', 'villa_dev']

    def update_bak_file(self):
        # 获取当前日期
        date = time.strftime("%Y-%m-%d", time.localtime())
        logging.info('>>> 当前日期:' + date)
        logging.info('>>> 开始备份备份数据库')
        os.chdir('/root')
        os.system('mkdir ~/backup/' + date)
        # mysqldump -uroot -proot@12345 horizon_dev > ~/backup/2020-02-19/horizon_dev_xxxxxx.sql
        for db in self.db_name:
            backup_file_name = db + '_' + str(time.time()) + '.sql'
            logging.info('>>> table=' + backup_file_name)
            os.system('mysqldump -uroot -proot@12345 ' + db + ' > ' + self.temp_dir + date + '/' + backup_file_name)
        logging.info('>>> 上传备份到oss')
        # ./ossutil64 cp ~/backup/2020-02-19/horizon_dev_xxxxxx.sql -r oss://mysqlbup/2020-02-19/horizon_dev_xxxxxx.sql
        os.system('./ossutil64 cp ' + self.temp_dir + date + ' -r oss://' + self.bucket_name + '/' + date)
        # 删除临时文件夹
        os.system('rm -rf ' + self.temp_dir + date)
        # 删除超过7天的备份文件


if __name__ == '__main__':
    MySqlBp().update_bak_file()

定时执行

crontab -l

crontab -e
# 每天22点备份一次
0 22 * * * /usr/share/anaconda3/bin/python3 /opt/horizon/back_up_db_oss.py
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值