# -*- coding:utf-8 -*-

# @Time : 2020-07-29

# @Author : Dingjs

#DB基本信息

import os

import time

import datetime

import glob

import shutil

"""

Python3.7 来执行mysql数据备份操作

自动保持7天的数据

备份的sql文件名精确到时分秒,这样即使一天备份多次,也不会进行覆盖

"""

#数据库基本信息设定

DB_HOST = '输入数据库地址'

DB_USER = '输入数据库账号'

DB_USER_PASSWORD = '输入数据库密码'

DB_PORT = '端口号3306'

#多库备份

#写法一:把需要备份的库名写到txt文件中,然后读取txt文件内的数据

#DB_NAME = '/backup/dbnames.txt'

#写法二:通过执行sql语句来匹配下载的库

# sqlStr1 = "show databases like 'iot%'"

#单库备份

DB_NAME = 'iot_test'

#备份路径

BACKUP_PATH = '../conn_DB/sql_path/'

#设置编码格式

DB_CharSet = 'utf8'

#创建datatime,作为备份文件名称

DATETIME = time.strftime('%Y%m%d')

#这里主要是做.sql文件的日期区分

DT_time = time.strftime("%Y%m%d_%H%M%S")

TODAYBACKUPPATH = BACKUP_PATH + DATETIME

#保留7天的备份文件

print ('del folder seven days ago')

folders = glob.glob('/backup/dbbackup/*')

today = datetime.datetime.now()

for item in folders:

try:

foldername = os.path.split(item)[1]

day = datetime.datetime.strptime(foldername, "%Y%m%d")

diff = today - day

if diff.days >= 7:

shutil.rmtree(item)

except:

pass

print("creating backup folder")

#查看备份文件夹是否存在,不存在,则创建

if not os.path.exists(TODAYBACKUPPATH):

os.makedirs(TODAYBACKUPPATH)

# Code for checking if you want to take single database backup or assinged multiple backups in DB_NAME.

#开始备份文件

print ("checking for databases names file.")

if os.path.exists(DB_NAME):

file1 = open(DB_NAME)

multi = 1

print("Databases file found...")

print ("Starting backup of all dbs listed in file " + DB_NAME)

else:

print ("Databases file not found...")

print ("Starting backup of database " + DB_NAME)

multi = 0

# Starting actual database backup process.

if multi:

in_file = open(DB_NAME,"r")

flength = len(in_file.readlines())

in_file.close()

p = 1

dbfile = open(DB_NAME,"r")

while p <= flength:

# 从数据库读取文件

db = dbfile.readline()

db = db[:-1]

#在python中通过cmd执行mysqldump备份语句

# dumpcmd = "mysqldump -u " + DB_USER + "-h"+DB_HOST + " -p" + DB_USER_PASSWORD + " " + db + " > " + TODAYBACKUPPATH + "/" + db + ".sql"

# os.system(dumpcmd)

#在python中通过cmd来执行mysqldump命令的另一种写法

os.system( "mysqldump -h%s -u%s -p%s %s --default_character-set=%s > %s/%s_%s.sql" % (

DB_HOST, DB_USER, DB_USER_PASSWORD, db, DB_CharSet, TODAYBACKUPPATH, DT_time, db))

p = p + 1

dbfile.close()

else:

db = DB_NAME

# dumpcmd = "mysqldump -u " + DB_USER + " -p" + DB_USER_PASSWORD + " " + db + " > " + TODAYBACKUPPATH + "/" + db + ".sql"

# os.system(dumpcmd)

os.system("mysqldump -h%s -u%s -p%s %s --default_character-set=%s > %s/%s_%s.sql" % (

DB_HOST, DB_USER, DB_USER_PASSWORD, db, DB_CharSet, TODAYBACKUPPATH,DT_time, db))

#结束后,打印执行状态信息

print ("Backup script completed")

print("Your backups has been created in '" + TODAYBACKUPPATH + "' directory")

python远程备份mysql_python3把服务器备份mysql数据库下载到本地相关推荐

  1. javaweb实现mysql备份功能_java web 实现mysql 数据库备份、恢复

    如题,由于项目需要,研究并实现了java web的 mysql数据库的备份.下载.恢复功能,中间遇到一些问题,耗费了不少时间,下面让我一一道来: 背景介绍: window 7系统 mysql 5.7 ...

  2. mysql nb3 备份_通过Navicat进行Mysql数据库自动备份与还原

    Mysql数据库自动备份流程 Navicat版本为:Navicat 12.0.26 例:test为用于测试自动备份的数据库,里面有表t_person,表中有两条数据. 1.点击"自动运行&q ...

  3. 基于宝塔面板的三种数据库备份方式(服务器备份,云备份,本地备份)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 基于宝塔面板的三种数据库备份方式(服务器备份,云备份,本地备份) 前言 前天也就是10月20号的时候,去河南郑州参加了第八届IHCN中 ...

  4. 如何查看服务器数据库管理系统,怎么查看服务器的mysql数据库

    怎么查看服务器的mysql数据库 内容精选 换一换 PostgreSQL支持逻辑备份.您可使用pg_dump逻辑备份功能,导出备份文件,再通过psql导入到RDS中,实现将PostgreSQL的数据导 ...

  5. 阿里云ECS服务器搭建Mysql数据库

    阿里云ECS服务器搭建Mysql数据库 一.服务器系统: Alibaba Cloud Linux 3.2104 LTS 64位 二.服务器文件夹创建 [说明]:由于服务器为新申请,故服务器为空白服务器 ...

  6. linux服务器安装mysql数据库并通过本地Navicat连接访问远程mysq数据库

    之前因为项目需要,所以自己在linux服务器上安装了mysql数据库,但是自己在安装mysql数据库的时候也是遇到了很多的问题,所以特此在本博客中介绍一下如何在linux服务器上进行mysql数据库的 ...

  7. android与mysql数据库同步_android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?...

    通过web服务器访问MYSQL数据库有以下几个过程: 1.在MySql下创建自己的数据库和自己的表单 2.连接数据库. 3.访问数据库 1.创建web工程 (服务器端) 在Myeclipse下新建一个 ...

  8. CENTOS 7 踢用户_CentOS服务器及MySQL数据库性能测试-乐搏软件测试

    这期小编和大家分享使用Sysbench,进行CentOS服务器及MySQL数据库的性能测试. Sysbench是一个跨平台的基准测试工具. 基准测试是对数据库的性能指标进行定量的.可复现的.可对比的测 ...

  9. 《微信小程序案例10》后端服务器与mysql数据库与前端微信小程序

    一.服务器配置mysql 1.下载数据库模块,直接在egg服务器里面下载:npm i --save egg-mysql 2.vscode打开服务器文件夹config里面的plugin.js ,开启刚刚 ...

最新文章

  1. 点星 (。*)表示任意数量的字符(不包括换行符)
  2. 解决Eclipse中SVN版本比较中文乱码问题
  3. linux下搭建go环境--问题记录
  4. C语言究竟是一门怎样的语言?
  5. SQL存储过程与自定义函数实例
  6. C# 操作World生成报告
  7. 未来互联网最稀缺的能力是什么?
  8. asp.net 2.0中页的生存周期(Lifecycle)和动态控件[转]
  9. 个人信息安全现状及保护方法
  10. java中curr是什么意思_curr.是什么意思
  11. 20个面向前端开发人员的文档和指南(第4号)
  12. srs直播 java开发,使用 SRS/OBS/VLC 快速搭建直播服务系统
  13. 【设计模式】Java设计模式 - 享元模式
  14. 什么是BFC?如何触发BFC
  15. matalb曲线图只有点没有线_身高170公分,体重170磅的女孩,身材健硕,没有一点多余赘肉...
  16. 车辆停放收费管理系统c语言,毕业论文 停车场收费管理系统
  17. Yann LeCun在线访谈:我的深度学习之路
  18. C语言 兔子繁殖问题
  19. PS无法完成请求,暂存盘已满的解决办法
  20. 符号引用和直接引用--java

热门文章

  1. 2020年中国地摊经济行业报告
  2. python send 案例_python使用rabbitmq实例三,交换机
  3. 作者:郑理,男,南京邮电大学计算机学院项目研究员。
  4. 【软件工程】软件开发的本质
  5. 动态规划 NOIP经典问题 开心的金明(洛谷P1060题题解,Java语言描述)
  6. Spring Bean的生命周期及接口回调
  7. webpack系列-plugin
  8. 【洛谷 P3304】[SDOI2013]直径(树的直径)
  9. AE 中的查找与定位,以城市查找为例
  10. 兔子--百度地图所需的jar+so下载地址