因为自己的服务器挂了一些服务并会产生一些比较有用的数据,而且最近发现服务器老被ddos攻击,所以就做了一些安全措施

  1. 安装安全狗软件
  2. 阿里云安全中心服务购买
  3. 最重要的也是本次要介绍的就是备份数据库, 本身使用宝塔面板的自动备份数据库只能保存备份到本地服务器, 然后自己想着如果服务器真被黑了就算有备份也白搭, 所有就想着吧数据库备份给提交到其他的存储位置, 所以就有了这个方案

使用python代码备份数据库并上传到OSS, 我用的数据库版本是Mysql5.6, 代码如下

# -*- coding: utf-8 -*-
import os,time,pymysql
import schedule
import zipfile
import oss2ip = '127.0.0.1'
userAndPwd = [
{"username" : "你的数据库账户", "pwd" : "你的数据库登录密码", "database" : "你的数据库"}
]
endpoint = "你的OSS所在位置域名"
accessKeyID = "你的accessKeyID"
accessKeySecret = "你的accessKeySecret"
bucketStr = "你的bucket"#检索数据库
def getDatabaseNames(username, pwd, database):conn = pymysql.connect(host="127.0.0.1", user=username, password=pwd, database=database, port=3306)cur = conn.cursor()cur.execute('show databases;')dbs = cur.fetchall()cur.close()conn.close()return dbs#path trim一下然后创建
def mkdir(path):path = path.strip()path = path.rstrip("\\")isExists = os.path.exists(path)if not isExists:os.makedirs(path)return Trueelse:return False
#文件压缩
def zip_ya(startdir,file_news, files):z = zipfile.ZipFile(file_news,'w',zipfile.ZIP_DEFLATED) #参数一:文件夹名for dirpath, dirnames, filenames in os.walk(startdir):fpath = dirpath.replace(startdir,'')fpath = fpath and fpath + os.sep or ''# for filename in filenames:z.write(os.path.join(dirpath, files + '.sql'),fpath+ files + '.sql')os.remove(startdir+ '/'+ files + '.sql')z.close()# os.rmdir(startdir)time.sleep(39)if oosyes == "y":auth = oss2.Auth(accessKeyID, accessKeySecret)bucket = oss2.Bucket(auth, "http://"+endpoint, bucketStr)timestrName = files + '_' + time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime(time.time()))path = os.path.split(os.path.realpath(__file__))objectPath = path[0]+"\\"+file_newsreplacePath = objectPath.replace("\\","/")#路径修正result = bucket.put_object_from_file('watersql/'+timestrName+".zip",replacePath)print('http status: {0}'.format(result.status))print('request_link:'+"https://"+bucketStr+"."+endpoint+"/watersql/"+timestrName+".zip")os.remove(replacePath)def mainfunation():timestr = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime(time.time()))folder = "mysql_data_bak/" + timestrmkdir(folder)for m in userAndPwd:dbs = getDatabaseNames(m['username'], m['pwd'], m["database"])for db in dbs:try:# dbname = db[0]# # 排除自带的db# if dbname == "mysql" or dbname == "performance_schema" or dbname == "information_schema" or dbname == "sys":#     continue# 导出dbcmd = "mysqldump -h" + ip + " -u%s -P%s -p%s %s > %s/%s.sql" % (m['username'], 30868, m['pwd'], m["database"], folder , m["database"])# print(cmd)os.system(cmd)except Exception as e:print(e)zip_ya(folder, folder +'.zip', m["database"] )# schedule.every().monday.at('23:00').do(mainfunation)
# while True:# schedule.run_pending()# time.sleep(1)
#  if __name__=="__main__":
mainfunation()
print('==================success==================' +  time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime(time.time())))

以上主要代码并非是我写的, 而是我从Gitee上面找到的开源代码并进行我自行修改后完成的, 以下是该代码原型的Gitee地址

https://gitee.com/WuHaojavaCode/automatic_database_backup?_from=gitee_search

数据库自动备份并存储至阿里云OSS相关推荐

  1. thymeleaf从后台application中取值 APlayer音乐播放器插件的使用 音乐存储在阿里云OSS

    1.后台: List<Map<String,Object>> musicMapList = ossFileService.getMusicList(); // 音乐播放列表 J ...

  2. 开源备份工具duplicity支持阿里云OSS后端存储

    duplicity简介 duplicity是一款开源的备份工具,使用librsync高效地支持增量备份,节约本地存储空间,同时使用GnuPG加密数据.duplicity能将数据轻松的备份到本地或远端文 ...

  3. (转)云存储:阿里云OSS 、又拍云和 七牛 的比较

    阿里OSS:好处就是,那是一套完整的体系,存储,数据库,CDN,服务器,阿里都可以给你全包.缺点,费用对于没有盈利的网站来说太高了,好像定位就是给那些高端客户使用的,而且CDN,OSS的流量是分开收费 ...

  4. 安装es怎么在后台运行_ES备份索引数据到阿里云OSS

    ES的快照备份当前是存放在NAS下,考虑成本问题现在打算把快照备份到阿里云OSS下. https://github.com/aliyun/elasticsearch-repository-oss,此插 ...

  5. harbor安装_Harbor简单安装部署,镜像仓库存储使用阿里云OSS

    使用docker-compose创建,此方法简单,问题是无法做到高可用. 环境准备: Harbor使用最新版本的harbor-offline-installer-v2.0.2.tgz 下载链接: ht ...

  6. Laravel Admin: Voyager 存储增加阿里云OSS

    前提条件:Voyager 已经安装完成,本地存储工作正常. Storage增加阿里云OSS支持: 在项目下利用composer安装 composer require jacobcyl/ali-oss- ...

  7. 6、阿里云OSS对象存储手把手学习及企业使用方案

    文章目录 1.什么是分布式文件系统 2.图片存储解决方案 3.阿里云OSS对象存储 3.1.开通oss访问 3.2.购买服务 3.3.基本概念 3.4.创建一个bucket 3.5.创建AccessK ...

  8. 阿里云OSS(对象存储服务)简介

    最近公司想要使用阿里云OSS来存储精准客流图片,所以提前熟悉一下,做一个记录 注:阿里云官方文档已经很详细的阐述了OSS.以及开发流程,本文大多都是参考官方文档 OSS官方介绍地址:https://h ...

  9. 利用阿里云OSS对文件进行存储,上传等操作

    --pom.xml加入阿里OSS存储依赖 <!--阿里云OSS存储--> <dependency><groupId>com.aliyun.oss</group ...

最新文章

  1. 医学假阴性?看看在机器学习中如何用来衡量分类模型的效果(附代码)
  2. Sql Server 性能分析4 –数据库大小,数据库表大小综合性分析报表输出
  3. perl脚本的默认参数
  4. 文件得编码和文件名的编码是不一样的
  5. 如何使用Selenium-Grid
  6. OpenCV人工智能图像处理学习笔记 第6章 计算机视觉加强之机器学习下 Hog_SVM小狮子识别
  7. oracle18c升级19,Upgrading Oracle 18c To 19c
  8. 表达无序列表语义的html标签是,HTML语义标签的介绍和常用的语义标签
  9. 使用BetterTouchTool自定义你的touchBar
  10. 互联网快讯:诺基亚与微软拓展合作;极米Z6X Pro、极米H3S成爆款;美的宣布收购武汉天腾动力
  11. c语言:(指针)输入一行文字,找出其中的大写字母,小写字母,数字,空格以及其他字符
  12. linux centos7 在线和离线安装字体
  13. 逆转的生殖——形而下的EOE补完仪式…
  14. 单片机c语言关键字 id,单片机关键字sfr和sbit的理解
  15. 1 W 字 | 硬刚 MySQL
  16. 宋晓丽20190919-5 代码规范,结对要求
  17. linux 卸载ogg,ubuntu下卸载realplay
  18. 撤回的消息服务器上查的出来吗,想查看对方已撤回的微信消息?就用这一招!...
  19. 第一部分:基础知识(第一章)
  20. Thymeleaf功能标签th:block

热门文章

  1. 【图片新闻】俄罗斯新型“Okhotnik”(“猎人”)重型攻击无人机首次亮相
  2. 小组项目第三周:后端数据——模拟炒股系统
  3. mongodb管理工具下载
  4. 今天看到“勃客郑渊洁”,是我的偶像
  5. JavaScript console 详解
  6. 在微信公众平台上创建模版并获取模版 ID。 调用模版消息接口,发送模版消息。 代码如下:...
  7. 鄂尔多斯市君正能源双向自动过磅系统基本功能有什么
  8. BootStrap #响应式布局 #组件
  9. 利用爬虫实现全国疫情实时监控(手机版)
  10. 传奇假人自动上线_传奇在哪里设置假人上线数量