mysqldump + python 定时备份数据库

场景:

   需要对mysql进行定时备份,受限于硬盘空间的大小,需要对备份的数据需要定时清理

在这里插入图片描述

python代码实现:

# -*- coding:UTF-8 -*-
"""@ProjectName  : HotelGo2DelonixPmx@FileName     : fix_missing_rates@Description  :使用mysqldump命令行工具进行备份:在命令行中执行以下命令:mysqldump -u 用户名 -p 密码 数据库名 > 备份文件.sql。这将生成一个包含所有SQL语句的备份文件,其中包括创建表、插入数据等操作。要还原备份,可以使用以下命令:mysql -u 用户名 -p 密码 新数据库名 < 备份文件.sql。@Time         : 2023/7/4 15:48@Author       : Qredsun"""import datetime
import functools
import os
import subprocess
import sys
import timeimport schedule
from loguru import logger# 数据库登录账户、密码
USERNAME = ''
PASSWORD = ''
# 指定备份存放路径
BACKUP_DIR = '/path/to/backup'
# 备份周期
RETENTION_PERIOD = 7logger.remove()  # 删去import logger之后自动产生的handler,不删除的话会出现重复输出的现象
handler_id = logger.add(sys.stderr, level="INFO")  # 添加一个可以修改控制的handlerinfo_log_path = os.path.join('log', datetime.datetime.now().strftime("database_backup_%y_%m_%d_debug.log"))
logger.add(info_log_path,rotation="23:00",retention="7 days",level="DEBUG")
info_log_path = os.path.join('log', datetime.datetime.now().strftime("database_backup_%y_%m_%d_error.log"))
logger.add(info_log_path,rotation="23:00",retention="7 days",level="ERROR")# 备份数据库
def backup_datebase():current_time = datetime.datetime.now()backup_file = current_time.strftime('backup_%y_%m_%d_%H_%M_%S.sql')backup_path = os.path.join(BACKUP_DIR, backup_file)# 使用 subprocess 模块执行数据备份命令 备份数据库所有数据back_command = ['mysqldump','-u',USERNAME,'-p',PASSWORD,'--all-database']with open(backup_path, 'w') as fp:subprocess.run(back_command, stdout=fp)logger.info(f'数据库备份已经完成,备份文件保存路径:{backup_path}')# 清理过期的备份文件
def cleanup_backup():current_time = datetime.datetime.now()expiration_time = current_time - datetime.timedelta(days=RETENTION_PERIOD)for file_name in os.listdir(BACKUP_DIR):file_path = os.path.join(BACKUP_DIR, file_name)if not os.path.isfile(file_path):continuefile_time = datetime.datetime.fromtimestamp(os.path.getatime(file_path))if file_time < expiration_time:os.remove(file_path)logger.info(f'删除过期文件:{file_path}')# 数据备份恢复
def restore_database(backup_file):backup_path = os.path.join(BACKUP_DIR, backup_file)# 使用 subprocess 模块执行数据恢复命令restore_command = ['mysqldump','-u',USERNAME,'-p',PASSWORD,'--all-database']with open(backup_path, 'r') as fp:subprocess.run(restore_command, stdin=fp)logger.info(f'使用 {backup_path} 完成数据库数据恢复')def catch_exceptions(cancel_on_failure = False):def catch_exceptions_decorator(job_func):@functools.wraps(job_func)def wrapper(*args, **kwargs):try:return job_func(*args, **kwargs)except:import tracebacktraceback.format_exc()if cancel_on_failure:return schedule.CancelJobreturn wrapperreturn catch_exceptions_decorator# 异常捕获方法的使用
@catch_exceptions(cancel_on_failure=True)
def task_job():# 定时任务backup_datebase()cleanup_backup()schedule.every().day.at("23:30").do(task_job)while True:schedule.run_pending()  # 运行所有可以运行的任务time.sleep(60*30)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/407985.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《通义千问AI落地—下》:WebSocket详解

一、前言 文本源自 微博客 且已获授权,请尊重版权。 《通义千问AI落地——下篇》如约而至。Websocket在这一类引用中,起到前后端通信的作用。因此,本文将介绍websocket在这类应用场景下的配置、使用、注意事项以及ws连接升级为wss连接等;如下图,本站已经使用了wss连接…

python实用教程(一):安装配置anaconda(Win10)

下一篇&#xff1a;python实用教程&#xff08;二&#xff09;&#xff1a;安装配置Pycharm及使用(Win10)-CSDN博客 1、简介及下载 Anaconda 是一个开源的 Python 和 R 语言的发行版&#xff0c;专为科学计算、数据分析、机器学习和大数据处理而设计。它包含了众多常用的数据…

【Python】列表和元组

文章目录 概念创建列表访问下标通过下标来修改列表元素获取列表长度下标可以写成负数 切片操作省略后边界省略前边界省略前后边界带有步长的切片 遍历列表元素使用 for 循环使用 for 循环访问下标的方式使用 while 循环 新增元素在末尾新增在任意位置新增 查找元素判定元素是否…

Python酷库之旅-第三方库Pandas(096)

目录 一、用法精讲 411、pandas.DataFrame.values属性 411-1、语法 411-2、参数 411-3、功能 411-4、返回值 411-5、说明 411-6、用法 411-6-1、数据准备 411-6-2、代码示例 411-6-3、结果输出 412、pandas.DataFrame.axes属性 412-1、语法 412-2、参数 412-3、…

背包问题【算法 07】

背包问题 背包问题是经典的计算机科学问题之一&#xff0c;涉及到如何在有限资源的约束下&#xff0c;选择最优的物品组合&#xff0c;以最大化收益。这个问题在现实中有广泛的应用&#xff0c;例如资源分配、物流调度和投资组合优化等。本文将详细介绍背包问题的定义、解决方法…

iphone问题笔记

拼音打字显示一些不相干的词 原因&#xff1a;开启了自动改正&#xff0c;傻逼iphone总以为你打错了。 计算器没有退格键&#xff1f; 解决方法&#xff1a;按住数字往右滑是退格。 关机重启必须去设置里&#xff1f; 连按五次锁屏可以选择关机。

如何选择适合自己的开放式耳机?五款实力出众爆款安利!

开放式耳机以其不侵入耳道的设计&#xff0c;为耳朵提供了更轻的负担&#xff0c;同时保护了耳道健康&#xff0c;这与传统的头戴式或入耳式耳机相比&#xff0c;在长时间佩戴时更能减少不适感。市场上的开放式耳机种类繁多&#xff0c;要找到一款真正满意的产品可能有些困难。…

文件—python

一、文件编码 对于同一份文件&#xff0c;人的视角和计算机的视角是不相同的&#xff0c;人看到的是文字&#xff0c;计算机看到的0和1组成的编码。因为计算机只能识别0和1&#xff0c;无法直接识别文字&#xff0c;那我们是如何在电脑上看到文字的呢&#xff1f; 计算机按照一…

【逐行注释】MATLAB下的IMM-EKF代码

IMM-EKF 基于EKF的多模型交互。以CV和CT两个模型进行交互&#xff0c;这里对代码进行逐行注释。 注释较多&#xff0c;个人理解的时候如果有误&#xff0c;欢迎指正。 每一行都有注释&#xff1a; 模型概况 二维平面上的运动模型&#xff0c;由CV和CT构成&#xff0c;基于…

C++:vector篇

前言&#xff1a; 本篇仅介绍vector中常用的函数接口&#xff0c;如果需要详细的请到官网查看。 vector是一种动态数组&#xff0c;能够自动调整大小。与数组类似&#xff0c;vector使用连续内存来存储元素&#xff0c;允许高效访问&#xff0c;但可以动态增加容量。为了应对容…

达梦数据库的系统视图v$tablespace

达梦数据库的系统视图v$tablespace 在达梦数据库&#xff08;DM Database&#xff09;中&#xff0c;V$TABLESPACE 提供了有关数据库中的表空间&#xff08;Tablespace&#xff09;信息。这些信息对于管理数据库存储和优化性能非常关键。表空间是数据库逻辑存储结构的一个层次…

12、stm32通过dht11读取温湿度

一、配置 二、代码 dht11.c /** dht11.c** Created on: Aug 19, 2024* Author: Administrator*/#include "main.h" #include "tim.h" #include "usart.h" #include "gpio.h" /**TIM3定时器实现us级延时*/ void Delay_us(uint16…

Midjourney提示词-动物系列-65

A super cute little anthropomorphic,sheep of the Chinese Zodiac, wearing berets ,in a Hanfu in red style,standing, eyes,cute tail,super realistic,super detail,luxurious,elegant,Unreal Engine,octane render, 8K,VRAY super realistic Pixar Style, Tiny cute…

[matlab]MATLAB实现MLP多层感知机minist手写识别预测

【测试环境】 matlab2023a 【源码文件截图】 【实现部分代码】 mlp_test.m %% MLP 2-layer to test XOR clear; clc;Mode MNIST %Mode XORif (strcmp(Mode,MNIST))% Load the digits into workspace (MNIST Test, from% http://yann.lecun.com/exdb/mnist/)num_train 100…

为什么要构建自己的 AI 代理库

上个月&#xff0c;我开始深入研究 AI 代理的世界。在探索这个领域时&#xff0c;我突然有了灵感&#xff1a;从现在开始我要研究 AI 代理。 最近&#xff0c;我一直在思考第二点。既然有很多可用的选项&#xff0c;为什么还要开发自己的 AI 代理库呢&#xff1f; 经过一番思…

SCI论文系统各阶段状态含义,一文带你全面掌握!告别投稿小白!

知识小站 SCI&#xff08;Science Citation Index&#xff0c;科学引文索引&#xff09;是由美国科学信息研究所&#xff08;Institute for Scientific Information, ISI&#xff09;创建的一个引文数据库。它收录了全球各学科领域中最具影响力的学术期刊&#xff0c;涵盖自然…

PyTorch深度学习模型训练流程的python实现:回归

回归的流程与分类基本一致&#xff0c;只需要把评估指标改动一下就行。回归输出的是损失曲线、R^2曲线、训练集预测值与真实值折线图、测试集预测值散点图与真实值折线图。输出效果如下&#xff1a; 注意&#xff1a;预测值与真实值图像处理为按真实值排序&#xff0c;图中呈现…

OCR识别行驶证(阿里云和百度云)

OCR识别行驶证(阿里云和百度云) 一、使用场景 1、通过识别行驶证&#xff0c;获取相关汽车信息&#xff0c;替代手输 二、效果图 三、代码部分&#xff1a; 1、阿里云OCR 1.1、控制层 PostMapping("/ocrCard") public JSONObject ocrCard(RequestPart("fi…

快速入门:使用Python构建学生成绩管理应用

前言 诸位观众&#xff0c;本学期我有幸学习了Python编程课程。随着课程的结束&#xff0c;授课教师布置了一项任务&#xff0c;要求我们开发一个学生信息管理系统。基于老师的要求&#xff0c;我个人独立完成了这项任务。今天&#xff0c;我希望将这个简易的程序分享给大家&a…

【数字三角形】

题目 代码 #include <bits/stdc.h> using namespace std;const int N 510; int f[N][N]; int a[N][N]; int main() {int n;cin >> n;for(int i 1; i < n; i){for(int j 1; j < i; j){cin >> a[i][j];if(i 1 && j 1) f[i][j] a[i][j];el…