Linux实现定时备份MySQL数据库并删除30天前的备份文件

yizhihongxing

下面我就为您讲解如何在Linux系统中实现定时备份MySQL数据库并删除30天前的备份文件的完整攻略。

环境准备

  • 系统:Ubuntu 18.04
  • MySQL版本:5.7.25
  • 备份工具:mysqldump

备份MySQL数据库

  1. 安装mysqldump

首先需要安装mysqldump,mysqldump可用于备份MySQL数据库

sudo apt-get install mysql-client
  1. 编写备份脚本

进入备份存放目录并创建备份脚本

cd /home/user/backups
touch backup.sh

使用编辑器编辑备份脚本,添加以下内容:

#!/bin/bash

# MySQL数据库配置
DB_user="root"
DB_password="password"
DB_name="database_name"

# 备份时间
backup_time=$(date +%Y%m%d%H%M%S)

# 备份文件名
backup_file="${DB_name}_backup_${backup_time}.sql"

# 备份MySQL
mysqldump -u${DB_user} -p${DB_password} ${DB_name} > ${backup_file}
  1. 运行备份脚本

在运行备份脚本之前,需要确保该脚本具有可执行权限。

使用以下命令赋予备份脚本权限:

chmod +x backup.sh

运行脚本进行备份:

./backup.sh

运行成功后备份文件将会保存到指定目录下。

删除30天前的备份文件

  1. 安装定时任务管理工具cron

在Ubuntu中,可使用以下命令进行安装:

sudo apt-get install cron
  1. 创建定时任务

使用以下命令编辑定时任务:

crontab -e

如果是第一次编辑,系统会提示选择编辑器,默认选择vi,敲击回车进入编辑模式。在编辑器中添加以下内容来设置定时任务:

0 0 */3 * * find /home/user/backups -type f -mtime +30 -name "*.sql" -exec rm -rf {} \;

这个定时任务的含义是每隔3天在0点0分执行一次查找备份文件并删除30天前备份的操作。这个时间可以根据需求自定义。

说明:
- 0 0 */3 * *表示每隔三天的0时整执行。
- find命令表示查找备份文件。
- /home/user/backups表示查找目录。
- -type f表示查找的是文件。
- -mtime +30表示30天前的文件,-mtime可以指定几天前的文件,+表示几天前以前的文件,-表示几天前到现在之间的文件。
- -name "*.sql"表示查找后缀为.sql的文件。
- -exec rm -rf {} \;表示执行删除操作。

示例:
假设现在是2022年12月01日,运行备份脚本之后备份的文件名为:database_name_20221201012520.sql,

那么执行定时任务的时候,它会查找/home/user/backups目录下*.sql文件,找到之前30天以前的备份文件database_name_20220131152420.sql,并删除之。

以上就是“Linux实现定时备份MySQL数据库并删除30天前的备份文件”的完整攻略,希望能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux实现定时备份MySQL数据库并删除30天前的备份文件 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Spring boot Jpa添加对象字段使用数据库默认值操作

    下面我将为您详细讲解“Spring boot Jpa添加对象字段使用数据库默认值操作”的完整攻略。 一、问题描述 在使用 Spring Boot JPA 操作数据库时,我们经常需要在新增对象时,使用数据库自动生成的默认值,比如自增主键、时间戳等。那么该如何在 Spring Boot JPA 中实现该功能呢? 二、解决方案 为了在 Spring Boot JP…

    database 2023年5月22日
    00
  • SQL 查找含有数字和字母的字符串

    当需要在SQL中查找含有数字和字母的字符串时,可以使用正则表达式来匹配符合条件的字符串。具体操作步骤如下: 1.使用正则表达式的LIKE运算符:LIKE ‘%[0-9]%’,该表达式可以匹配任意包含数字的字符串。 2.使用正则表达式的LIKE运算符:LIKE ‘%[a-zA-Z]%’,该表达式可以匹配任意包含字母的字符串。 3.使用正则表达式的LIKE运算符…

    database 2023年3月27日
    00
  • Node.js数据库操作之连接MySQL数据库(一)

    下面是“Node.js数据库操作之连接MySQL数据库(一)”的完整攻略: 连接MySQL数据库 安装MySQL 首先需要下载并安装MySQL,可以从官网或镜像站点中下载。安装完成后,需要设置root用户的密码。 安装mysql模块 接下来需要安装npm的mysql模块,可以使用npm命令进行安装: $ npm install mysql 连接MySQL c…

    database 2023年5月18日
    00
  • SQL 识别重叠的日期区间

    要识别重叠的日期区间,我们需要使用SQL中的日期函数和比较运算符,具体的攻略可分为以下几步: 定义日期区间。 在SQL中,我们可以使用DATE类型的数据来表示日期。如果我们要定义一个日期区间的话,我们需要记录它的开始日期和结束日期。 例如,我们定义了一个名为“销售日期区间”的表,其中包括下列字段: – ID:销售日期区间的唯一标识符。 – start_dat…

    database 2023年3月27日
    00
  • DBMS中触发器和过程的区别

    DBMS中触发器和过程都是数据库中的一种对象,主要是为了实现数据库的自动化操作和处理,但是它们在实现方式和作用上有很大的差异。下面我将详细讲解它们之间的区别。 触发器(Trigger) 触发器是一种特殊的存储过程,它是与一个特定的表关联的操作,当该表上的数据发生特定的事件时(如修改、插入或删除),就会自动触发执行特定的脚本。触发器可以用于维护数据完整性、更新…

    database 2023年3月27日
    00
  • 用一条mysql语句插入多条数据

    要使用一条MySQL语句一次性插入多条数据,可以使用INSERT INTO语句结合VALUES子句和多个数据值的列表,或者使用SELECT语句将多个数据行插入到表中。以下是两种不同的方法。 方法1:使用VALUES子句插入多个数据值 此方法将所有要插入的数据值列表放在一个VALUES子句中,如下所示: INSERT INTO table_name (colu…

    database 2023年5月22日
    00
  • 启动springboot应用因未配置数据库报错的解决方案

    当启动Spring Boot应用时,如果未正确配置数据库或者数据库访问错误,很容易造成应用启动失败。下面将介绍一些解决方案。 1. 查看错误原因 在启动Spring Boot应用是,可能会出现以下两种类型的报错: 沙发启动报错 启动后无法正常访问应用 对于第一种类型错误,可通过查看控制台中的报错信息,定位错误原因。常见的报错信息为连接数据库失败或找不到数据库…

    database 2023年5月21日
    00
  • 阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法

    阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法 在使用阿里云Linux CentOS 7.2下自建MySQL时,有时候会遇到忘记root账户的密码的问题。本文将详细介绍解决这一问题的方法。 方法一:使用mysqld_safe 停止MySQL服务 sudo systemctl stop mysqld 使用下面的命令启动mys…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部