目标:每日定时自动备份Mysql数据库


方案:

1、安装Python:

  使用的Python版本是Python3.7.1,下载地址:https://www.python.org/downloads/release/python-371/,安装过程略过。

2、python脚本:

  

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from datetime import date,datetime
  4. import os
  5. import zipfile
  6. import re
  7.  
  8. def search_file(path, pattern):
  9. result_file_list = []
  10. with os.scandir(path) as it:
  11. for entry in it:
  12. if not entry.name.startswith('.') and entry.is_file():
  13. if re.fullmatch(pattern, entry.name):
  14. result_file_list.append(entry.name)
  15.  
  16. return result_file_list
  17.  
  18. # 开始备份
  19. print("开始备份数据库...")
  20.  
  21. # 获取当前时间
  22. cur_date = date.today().strftime("%Y%m%d")
  23. # 数据库IP
  24. host = "localhost"
  25. # 数据库名称
  26. db_name = "db"
  27. # 用户名
  28. db_user_name = "root"
  29. # 密码
  30. db_user_pwd = "password"
  31. # 备份目录
  32. backup_dir = "E:\\DataBaseBackup\\db"
  33. # 备份目录不存在则创建
  34. if not os.path.exists(backup_dir):
  35. os.makedirs(backup_dir)
  36. # 备份文件名
  37. file_name = cur_date + ".sql"
  38. # 压缩文件名
  39. zip_file_name = cur_date + ".zip"
  40.  
  41. #切换到备份目录
  42. os.chdir(backup_dir)
  43. # 备份数据库命令
  44. run_backup = "D:\\MySql\\mysql-5.7.21-winx64\\bin\\mysqldump.exe --host=" + host + " --user=" + db_user_name + " --password=" + db_user_pwd + " --protocol=tcp --port=3306 --default-character-set=utf8 " + db_name + " > " + file_name
  45. print(run_backup)
  46. # 执行备份
  47. os.system(run_backup)
  48.  
  49. #文件是否存在
  50. file_exist = os.path.exists(file_name)
  51. if file_exist:
  52. # 压缩文件
  53. with zipfile.ZipFile(zip_file_name,"w",zipfile.ZIP_DEFLATED) as myzip:
  54. myzip.write(file_name)
  55.  
  56. # 删除文件
  57. os.remove(file_name)
  58.  
  59. # 备份结束
  60. print("备份数据库成功")
  61.  
  62. # 清理30天前的过期文件
  63. max_days = 30
  64. old_files = search_file(backup_dir, r"\d{8}.zip")
  65. for old_file in old_files:
  66. str_date = old_file.split('.')[0]
  67. dt = datetime.strptime(str_date,"%Y%m%d")
  68. days = (datetime.today() - dt).days
  69. if days > max_days:
  70. os.remove(old_file)

  说明:使用mysql的mysqldump备份数据库(可配置为环境变量),备份的文件将是以当前日期为名称的zip文件,备份文件只保留30天。

3、配置windows任务计划:

  3.1、打开“计算机管理”,找到“任务计划程序”,点击“创建任务”

    

  3.2、配置任务信息:

   

  3.3、新建触发器

  

  

  3.4、新建操作

  

  

  3.5、确认保存

  3.6、运行测试

  

  Over!!Bye Bye

使用Windows任务计划程序和Python备份Mysql数据库的更多相关文章

  1. 【mysql】备份篇1:使用系统计划任务+mysqldump 定时备份mysql数据库 不用输入密码自动导出sql文件

    项目部署在服务期上之后,有了新的需求,需要每月定时备份mysql数据库的所有数据! 查找了网上的多篇文章之后,自己又对bat文件中的mysqldump语句进行改进,可以实现了不用输入密码就能自动定时备 ...

  2. 计划任务实现定时备份mysql数据库

    1.linux平台 30 3 * * * sh /data/tools/mysqlbackup.sh  每天3点半备份数据库mysqlbackup.sh(备份最近5天的数据): #设置数据库名,数据库 ...

  3. Python备份MySQL数据库【转】

    #!/usr/bin/env python # coding: utf- import os import time ''' defined variable ''' databases=['hch' ...

  4. python备份mysql数据库

    介绍使用python结合mysqldump对mysql数据库进行备份 import os import sys import configparser import time def test_fil ...

  5. Windows任务计划程序起始于参数自动修改

    Windows任务计划程序建立后,手工运行可以成功,但计划任务自动运行却不能成功,搜索网络,原来是起始于参数没有配置,这个参数的英文名字是start-in.它保证任务计划程序的WorkingDirec ...

  6. 在WINDOWS任务计划程序下执行PHP文件 PHP定时功能的实现

    最近需要做一个定时任务功能,从网站找了很多相关的代码,windows实现方法综合起来大概就两种, 一.使用PHP ignore_user_abort 函数 即使关掉浏览器也能正常运行:(个人感觉PHP ...

  7. Windows系统定时备份MySQL数据库

    当一个网站投入使用时,定期备份数据库是必要的事.那么,在Windows系统上,我们该如何做呢? 如下语句可以实现备份及还原MySQL数据库: 备份MySQL数据库 mysqldump -uroot - ...

  8. 【mysql】备份篇2:使用java程序定期备份mysql数据库

    承接备份篇1, 在备份篇1中,使用dat文件加+系统计划任务程序完成mysql定期备份任务 在这一篇,备份使用java程序定期备份mysql数据库. 下面代码和程序思想给出: package com. ...

  9. Windows下安装MySQLdb, Python操作MySQL数据库的增删改查

    这里的前提是windows上已经安装了MySQL数据库,且配置完成,能正常建表能操作. 在此基础上仅仅需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了.仅仅有1M ...

随机推荐

  1. go 数据类型和操作符

    文件名&关键字&标识符 1. 所有go源码以 .go结尾 2. 标识符以字母或者下划线开头,大小写敏感:add, Add, _add _是特殊标识符,用来忽略结果 3. 保留关键字 G ...

  2. java编程——数据的加法

    设计思想: 第一步:从键盘上输入一定个数的整数. 第二步:因为在main()方法中的参数是String类型的,所以第一步中输入的其实是字符类型,在这一步要把String转化成int. 第三步:初始化s ...

  3. mysql UDF提权 sys_bineval

    介绍: 执行shellcode – sys_bineval sqmapl自带udf.dll中存在函数’sys_bineval,执行shellcode – sys_bineval 利用: MSF生成sh ...

  4. 3、docker 容器管理

    Docker容器相对于OpenStack的云主机实例,虽然他们本质上不同.我们需要基于镜像来创建容器.容器是独立运行的一个或一组应用,以及它们的运行环境.对应的,虚拟机可以理解为模拟运行的一整套操作系 ...

  5. css样式初始化代码总结

    编写css样式之前需要初始化css样式,总结如下: /* CSS Document */ html, body, div, span, object, iframe,h1, h2, h3, h4, h ...

  6. 解析Spring第一天

    目的:了解spring框架中的注解 前言:同样是使用idea创建一个普通的maven工程(如何创建一个普通的Maven工程可以参考mybatis入门第一天的详解). 项目结构: 代码编辑: 在项目中引 ...

  7. SpringBatch批处理框架:入门项目

    1.项目结构如下:

  8. 计算几何——线段和直线判交点poj3304

    #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #i ...

  9. eclipse+terminal

    eclipse 怎么安装terminal插件   1 首先打开eclipse,找到help菜单,点击Eclipse Marketplace. 2 在search框里输入Terminal,点击Go查找. ...

  10. jedis3.1.0在weblogic(jdk1.6)中无法运行

    文章目录 错误 探索 总结 错误 在tomcat中运行是没有问题的,可是在weblogic中是不能够运行的,weblogic中的jdk客户要求是1.6的. 如果更换版本jedis2.9.0是没有问题的 ...