python备份mysql数据库
介绍使用python结合mysqldump对mysql数据库进行备份
import os
import sys
import configparser
import time def test_file_path(fp):
if not os.path.exists(fp):
raise RuntimeError('file {} not found'.format(fp)) def backup_mysqldb(backup_param):
test_file_path(backup_param['mysql']['dump'])
test_file_path(backup_param['bak']['cmd_zip'])
cmd1 = '{dump} -u{user} -p{password} -h{hostip} \
-P{port} {dbname}'.format(**backup_param['mysql'])
print(cmd1)
backup_name = time.strftime('mysqlbackup%Y%m%d_%H%M%S')
backup_param['bak']['backup_name'] = backup_name
cmd2 = backup_param['bak']['cmd_bak'].format(**backup_param['bak'])
print(cmd2)
cmd = cmd1 + ' | ' + cmd2
print(cmd)
os.system(cmd) def del_old_backup(backup_param):
backup_path = backup_param['bak']['backuppath']
print(int(backup_param['bak']['keepday']))
t = time.time() - int(backup_param['bak']['keepday']) * 24 * 60 * 60
last_day = time.strftime('%Y%m%d', time.localtime(t))
for fn in os.listdir(backup_path):
fp = os.path.join(backup_path, fn)
print(fp)
if os.path.isfile(fp):
file_day = get_time_from_name(fn)
print(file_day, last_day)
if file_day < last_day:
print('del file ', fn)
os.remove(fp) def get_time_from_name(fn):
# mysqlbackup20140211_172713.7z
import re
pattern = r'.*(\d{8})_\d*'
m = re.match(pattern, fn)
return m.group(1) if __name__ == '__main__':
current_dir = sys.argv[0]
current_dir = os.path.abspath(current_dir)
current_dir = os.path.dirname(current_dir)
os.chdir(current_dir)
print(os.getcwd())
config = configparser.ConfigParser()
config.read_file(open(current_dir + r'\config.ini'))
for k,v in config.items():
for k1,v1 in v.items():
print('{}\n {}:{}'.format(k, k1, v1))
backup_mysqldb(config)
del_old_backup(config)
配置文件
[mysql]
hostip=localhost
user=root
password=12345
port=3306
dbname=test
dump=path_to_mysqldump.exe
[bak]
cmd_zip=.\7z.exe
cmd_bak={cmd_zip} a {backuppath}\{backup_name}.7z -si{backup_name}.bak
backuppath=.\backup
keepday=7
python备份mysql数据库的更多相关文章
- 使用Windows任务计划程序和Python备份Mysql数据库
目标:每日定时自动备份Mysql数据库 方案: 1.安装Python: 使用的Python版本是Python3.7.1,下载地址:https://www.python.org/downloads/re ...
- Python备份MySQL数据库【转】
#!/usr/bin/env python # coding: utf- import os import time ''' defined variable ''' databases=['hch' ...
- 配合crond服务实现自定义周期备份MySQL数据库(使用innobackupex进行备份)
备份 新建一个脚本/root/backup.py,内容如下: #!/usr/bin/env python# -*- coding: utf-8 -*- ''' 脚本作者:昨夜星辰 脚本作用:配合cro ...
- 使用python操作mysql数据库
这是我之前使用mysql时用到的一些库及开发的工具,这里记录下,也方便我查阅. python版本: 2.7.13 mysql版本: 5.5.36 几个python库 1.mysql-connector ...
- 实现定时备份mysql数据库并把备份数据库邮件发送
一.先来看备份mysql数据库的命令 1 mysqldump -u root --password=root --database abcDataBase > c:/abc_backup.sql ...
- 【Python】使用python操作mysql数据库
这是我之前使用mysql时用到的一些库及开发的工具,这里记录下,也方便我查阅. python版本: 2.7.13 mysql版本: 5.5.36 几个python库 1.mysql-connector ...
- 第9课:备份mysql数据库、重写父类、unittest框架、多线程
1. 写代码备份mysql数据库: 1)Linux下,备份mysql数据库,在shell下执行命令:mysqldump -uroot -p123456 -A >db_bak.sql即可 impo ...
- 使用shell脚本定时执行备份mysql数据库
使用shell脚本定时执行备份mysql数据库 #!/bin/bash ############### common file ################ #本机备份文件存放目录 MYSQLBA ...
- Python操作MySQL数据库(步骤教程)
我们经常需要将大量数据保存起来以备后续使用,数据库是一个很好的解决方案.在众多数据库中,MySQL数据库算是入门比较简单.语法比较简单,同时也比较实用的一个.在这篇博客中,将以MySQL数据库为例,介 ...
随机推荐
- python 矢量化的字符串
- 关于C语言读取文件时候多读一行
梗概:为什么C语言读取文件到结构体时为什么整天多读一行?一切都是[!feof(fp)]的错!!! while (!feof(fp)) { fgets(buffer, , fp); j++; } 像这样 ...
- 性能测试工具Jmeter11-Jmeter图形监控扩展
插件下载地址:http://jmeter-plugins.org/downloads/all/ 1.首先将JmeterPluging.jar包复制到Jmeter的Lib目录下面的ext目录下面,然后重 ...
- redis4集群
三台服务器:先设置hosts 10.0.0.231 node1 10.0.0.232 node2 10.0.0.233 node3 端口分配: node1: node1: node2: node2: ...
- URAL 1145—— Rope in the Labyrinth——————【求树的直径】
Rope in the Labyrinth Time Limit:500MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64 ...
- [转] Java集合类详解
集合类说明及区别Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMap ...
- 通过一个例子,总结下检测数组属性的N种方法
判断arr数组里是否含有a,有a返回1;没有返回2var arr = [{a:1,b:2,c:3},{q:1,w:2,e:3},{s:4,g:5,i:9},{b:2,v:3,u:4}]; 检测属性的3 ...
- Intellij IDEA 配置jrebel热部署
Jrebel 先介绍一下jrebel,jrebel是可以热部署项目的一个工具,更改代码自动部署并不需要重启项目(在spring中的controller中,增加.修改方法都是可以进行热部署而不需要重启的 ...
- intellijidea课程 intellijidea神器使用技巧 3-3 postfix
Ctrl shift A ==> postfix completion 调出postfix 方法体中 ==> for 100.fori ==>enter for循环10 ...
- JavaScript平台Platypi悄然登场
几个月前,一个新的JavaScript平台Platypi悄然诞生.它为开发者提供的不仅仅是一套标准的MVC框架而已,由于它是基于TypeScript构建的,因此对开发者而言在熟悉之中透露出与众不同的感 ...