使用python备份数据库并删除备份超过一定时长的文件
#!/usr/bin/env python
#-*- coding: utf-8 -*-
"""
@Project:Py
@author:sandu
@Email: sandu12345@msn.cn
@Software: PyCharm
@file: mysql_class.py
@time: 2018/1/18 0018 下午 14:02
""" #导入模块
import time
import os DATE = time.strftime('%Y%m%d%H%M%S')
DAYS = 3 class MysqlBak(): def __init__(self,DATE,DAYS):
self.date = DATE
self.days = DAYS
self.__DB_HOST = "127.0.0.1"
self.__DB_PORT = ""
self.__DB_NAME = "demooil"
self.__DB_USER = "demooil"
self.__DB_PASS = "8OvUNQU8CggrahGS"
self.__BIN_DIR = "/usr/local/mysql/bin/mysqldump"
self.__OPTIONS = "--skip-extended-insert --skip-lock-tables --set-gtid-purged=OFF --triggers --routines --events"
self.__MYSQLBACK_DIR = "/home/backup/demooil_bak/"
self.__filebak_log = "/var/log/mysqlbak.log"
self.__filerm_log = "/var/log/mysqlrm.log" def mysql_bak(self):
try:
# all
mysql_file = self.__MYSQLBACK_DIR + str(self.date) + ".sql"
os.system("%s -h%s -u%s -p%s %s -d --databases %s > %s" % (self.__BIN_DIR,self.__DB_HOST,self.__DB_USER,self.__DB_PASS,self.__OPTIONS,self.__DB_NAME,mysql_file))
if os.path.exists(mysql_file):
with open(self.__filebak_log,'a') as f_obj:
f_obj.write('%s success back file %s \n' % (self.date[0:8],mysql_file))
except Exception as e:
with open(self.__filebak_log, 'a') as f_obj:
f_obj.write('%s error back file %s \n' % (self.date[0:8],mysql_file))
f_obj.write("error msg: %s" % e) def mysql_rm(self):
"""删除备份目录下超过一定时长的文件"""
f = list(os.listdir(self.__MYSQLBACK_DIR))
now_time = self.date[0:8]
for i in f:
if i[15:] == 'sql':
exit_time = i[0:8]
update_time = int(exit_time) + self.days
if update_time < int(now_time):
os.remove(self.__MYSQLBACK_DIR + i)
with open(self.__filerm_log, 'a') as file_log:
file_log.write("%s删除备份文件%s \n" % (self.date[0:8], i)) if __name__ == '__main__':
mysql_bak = MysqlBak(DATE,DAYS)
mysql_bak.mysql_bak()
mysql_bak.mysql_rm() # linux定时执行python文件
# crontab
# 0 5 * * * /usr/bin/python /root/demooil_mysql_bak.py >/dev/null 2>&1
使用python备份数据库并删除备份超过一定时长的文件的更多相关文章
- 使用python备份指定目录并删除备份超过一定时长的文件
#!/usr/bin/env python #-*- coding: utf-8 -*- """ @Project:Py @author: @Email: @Softwa ...
- SQL server 2008定期的备份数据库及删除job
在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员 每天守到晚上1点去备份数据库.要实现数据库的 ...
- Mongodb自动备份数据库并删除指定天数前的备份
1.创建Mongodb数据库备份目录 mkdir -p /home/backup/mongod_bak/mongod_bak_now mkdir -p /home/backup/mongod_bak/ ...
- sql server 批量备份数据库及删除N天前的备份数据
很多时候,我们都需要将数据库进行备份,当服务器上数据库较多时,不可能一个数据库创建一个定时任务进行备份,这时,就需要进行批量的数据库备份操作,好了,废话不多说,具体实现语句如下: 1 2 3 4 5 ...
- Linux 下定时备份数据库以及删除缓存
一.定时备份数据库 1.在根目录下创建备份文件夹 #mkdir backup 2.进入到该目录下,创建backup.sh文件 3.赋予文件权限让其变成可执行文件 4.在backup.sh中写备份的脚本 ...
- SQL server 2008 Express Edition实现自动备份和自动删除备份
1.查看SQL 版本: select @@VERSION --可以看到 Express Edition 精简免费版 Microsoft SQL Server 2008 R2 (SP2) - 10.50 ...
- 利用shell脚本自动化备份数据库与手动备份还原数据库操作
1.在linux操作系统上手动备份数据库 mysqldump -h 服务器IP地址 -u root -p数据库密码 --databases 所要备份的数据库名称 > /路径/数据库.sql(自定 ...
- mysql在Windows下使用mysqldump命令手动备份数据库和自动备份数据库
手动备份: cmd控制台: 先进入mysql所在的bin目录下,如:cd C:\Program Files\MySQL\MySQL Server 5.5\bin mysqldump -u root - ...
- Sql Server自动备份数据库,定期删除备份
//实现:每天自动备份数据库,定期删除备份 //步骤:[开始]--[所有程序]--[Microsoft SQL Server 2005]--[SQL Server Management Studio] ...
随机推荐
- struct 模块简介
用处 按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时,不能传输int,此时先将int转化为字节流,然后再发送; 按照指定格式将字节流转换为Python指定的数据类型; 处理 ...
- LaTeX 加粗
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50997822 LaTeX中文本加粗的方 ...
- “王者对战”之 MySQL 8 vs PostgreSQL 10
既然 MySQL 8 和 PostgreSQL 10 已经发布了,现在是时候回顾一下这两大开源关系型数据库是如何彼此竞争的. 在这些版本之前,人们普遍认为,Postgres 在功能集表现更出色,也因其 ...
- MyBatis-Spring-SqlSessionFactoryBean(转)
SqlSessionFactoryBean 在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创建.而在 MyBatis-Spring 中 ...
- Spring自带字符编码过滤器
http://blog.csdn.net/youngage/article/details/51356821 http://blog.csdn.net/daelly/article/details/5 ...
- [Beginning SharePoint Designer 2010]Chapter 3 分析SharePoint页面
本章概要: 1.SharePoint中主要页面类型 2.SharePoint如何组织页面 3.如何编辑母板页 4.SharePoint母板页中的主要内容占位符
- 《Javascript权威指南》学习笔记之十五:BOM之源---window对象
BOM是Browser Object Model的缩写,即浏览器对象模型,提供了独立于网页内容和浏览器窗体之间进行交互的APi.API由若干对象组成,因为浏览器是Javascript的宿主,因此,这些 ...
- Storm同时接收多个源(spout和bolt)
参考: http://blog.csdn.net/nyistzp/article/details/51483779
- POJ 3737
第一道三分题,有模板 #define eps 10e-6 double cal(){}//计算题目所需要的值 while(l+eps<r) { m1=l+(r-l)/3; m2=r-(r-l)/ ...
- [Preference] How to avoid Forced Synchronous Layout or FSL to improve site preference
When tigger site updates the layout, it always follow this order: Javascript trigger style changes, ...