介绍使用python结合mysqldump对mysql数据库进行备份

  1. import os
  2. import sys
  3. import configparser
  4. import time
  5.  
  6. def test_file_path(fp):
  7. if not os.path.exists(fp):
  8. raise RuntimeError('file {} not found'.format(fp))
  9.  
  10. def backup_mysqldb(backup_param):
  11. test_file_path(backup_param['mysql']['dump'])
  12. test_file_path(backup_param['bak']['cmd_zip'])
  13. cmd1 = '{dump} -u{user} -p{password} -h{hostip} \
  14. -P{port} {dbname}'.format(**backup_param['mysql'])
  15. print(cmd1)
  16. backup_name = time.strftime('mysqlbackup%Y%m%d_%H%M%S')
  17. backup_param['bak']['backup_name'] = backup_name
  18. cmd2 = backup_param['bak']['cmd_bak'].format(**backup_param['bak'])
  19. print(cmd2)
  20. cmd = cmd1 + ' | ' + cmd2
  21. print(cmd)
  22. os.system(cmd)
  23.  
  24. def del_old_backup(backup_param):
  25. backup_path = backup_param['bak']['backuppath']
  26. print(int(backup_param['bak']['keepday']))
  27. t = time.time() - int(backup_param['bak']['keepday']) * 24 * 60 * 60
  28. last_day = time.strftime('%Y%m%d', time.localtime(t))
  29. for fn in os.listdir(backup_path):
  30. fp = os.path.join(backup_path, fn)
  31. print(fp)
  32. if os.path.isfile(fp):
  33. file_day = get_time_from_name(fn)
  34. print(file_day, last_day)
  35. if file_day < last_day:
  36. print('del file ', fn)
  37. os.remove(fp)
  38.  
  39. def get_time_from_name(fn):
  40. # mysqlbackup20140211_172713.7z
  41. import re
  42. pattern = r'.*(\d{8})_\d*'
  43. m = re.match(pattern, fn)
  44. return m.group(1)
  45.  
  46. if __name__ == '__main__':
  47. current_dir = sys.argv[0]
  48. current_dir = os.path.abspath(current_dir)
  49. current_dir = os.path.dirname(current_dir)
  50. os.chdir(current_dir)
  51. print(os.getcwd())
  52. config = configparser.ConfigParser()
  53. config.read_file(open(current_dir + r'\config.ini'))
  54. for k,v in config.items():
  55. for k1,v1 in v.items():
  56. print('{}\n {}:{}'.format(k, k1, v1))
  57. backup_mysqldb(config)
  58. del_old_backup(config)

配置文件

  1. [mysql]
  2. hostip=localhost
  3. user=root
  4. password=12345
  5. port=3306
  6. dbname=test
  7. dump=path_to_mysqldump.exe
  8. [bak]
  9. cmd_zip=.\7z.exe
  10. cmd_bak={cmd_zip} a {backuppath}\{backup_name}.7z -si{backup_name}.bak
  11. backuppath=.\backup
  12. keepday=7

代码打包

python备份mysql数据库的更多相关文章

  1. 使用Windows任务计划程序和Python备份Mysql数据库

    目标:每日定时自动备份Mysql数据库 方案: 1.安装Python: 使用的Python版本是Python3.7.1,下载地址:https://www.python.org/downloads/re ...

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

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

  3. 配合crond服务实现自定义周期备份MySQL数据库(使用innobackupex进行备份)

    备份 新建一个脚本/root/backup.py,内容如下: #!/usr/bin/env python# -*- coding: utf-8 -*- ''' 脚本作者:昨夜星辰 脚本作用:配合cro ...

  4. 使用python操作mysql数据库

    这是我之前使用mysql时用到的一些库及开发的工具,这里记录下,也方便我查阅. python版本: 2.7.13 mysql版本: 5.5.36 几个python库 1.mysql-connector ...

  5. 实现定时备份mysql数据库并把备份数据库邮件发送

    一.先来看备份mysql数据库的命令 1 mysqldump -u root --password=root --database abcDataBase > c:/abc_backup.sql ...

  6. 【Python】使用python操作mysql数据库

    这是我之前使用mysql时用到的一些库及开发的工具,这里记录下,也方便我查阅. python版本: 2.7.13 mysql版本: 5.5.36 几个python库 1.mysql-connector ...

  7. 第9课:备份mysql数据库、重写父类、unittest框架、多线程

    1. 写代码备份mysql数据库: 1)Linux下,备份mysql数据库,在shell下执行命令:mysqldump -uroot -p123456 -A >db_bak.sql即可 impo ...

  8. 使用shell脚本定时执行备份mysql数据库

    使用shell脚本定时执行备份mysql数据库 #!/bin/bash ############### common file ################ #本机备份文件存放目录 MYSQLBA ...

  9. Python操作MySQL数据库(步骤教程)

    我们经常需要将大量数据保存起来以备后续使用,数据库是一个很好的解决方案.在众多数据库中,MySQL数据库算是入门比较简单.语法比较简单,同时也比较实用的一个.在这篇博客中,将以MySQL数据库为例,介 ...

随机推荐

  1. 关于KEIL下的图形化显示和输出问题

    一 keil自带的虚拟示波器:只能在软件仿真下使用:右边的这个可以查看变量. 二 SEGGER的工具软件: 1 RTT:可以进行日志输出调试信息输出,需要配置工程,但不占用串口. 2 JSCOPE:可 ...

  2. qt安装

    在以下网页选择一个国内的下载地址即可 http://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-linux-x64-5.7. ...

  3. 如何有效防止DEDE织梦系统被挂木马安全设置(仅供参考)

    尊敬的客户,您好!     感谢广大客户对我司工作的信任和支持!      我司在最近的一个多月内陆续发现多起因 DedeCMS 安全漏洞造成网站被上传恶意脚本的事件,入侵者可利用恶意脚本对外发送大量 ...

  4. HDU——Cover——————【技巧】

    Cover Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  5. winfrom C#树勾选等

    AfterCheck /// <summary> /// 树勾选 /// </summary> /// <param name="sender"> ...

  6. Day6上 括号匹配专项

    滑稽的题 T1 #include<iostream> #include<cstring> #include<queue> #include<algorithm ...

  7. AngularJS 学习(-)Hello world

    早期的AngularJS使我们的前端开发模式发生很大的变化,基使用MVC. Model - html 模板:Controller - js脚本; Model 来自于Web API 或其他Service ...

  8. 微信小程序电商实战-首页(上)

    嗨,大家好!经过近两周的精心准备终于开始微信小程序电商实战之路喽.那么最终会做成什么样呢?当然可以肯定不会只做一个静态demo哦,先把我们小程序电商实战的整体架构发出来晒一下,请看下图:   架构图. ...

  9. python模块详解 re

    摘自:python中的正则表达式(re模块) 一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被 ...

  10. Eclipse 如何修改 Web 项目的名称

    Eclipse 切换到  Navigator 视图,能显现出项目下所有的文件便于修改. 1.修改该项目目录下:.project文件 <projectDescription><name ...