linux定时备份MySQL数据库并删除以前的备份文件(推荐)

下面是详细的攻略:

1. 安装crontab

Crontab是Linux自带的定时任务工具。首先我们要确认系统中是否已经安装了Crontab。

在终端输入命令:

crontab -l

如果出现“no crontab for 用户名”这样的提示,就意味着Crontab还没有被安装。这个时候我们需要用命令安装:

sudo apt-get install cron

安装完成后,再次输入 crontab -l 命令就能看到系统中已有的定时任务。

2. 编写备份脚本

在终端中输入以下命令创建备份脚本:

sudo nano ~/backup.sh

在打开的编辑器中编写以下脚本:

#!/bin/bash

# 定义需要备份的数据库名称、备份后的文件名和备份目录
DB_USER="用户名"
DB_PASSWORD="密码"
DB_NAME="数据库名"
BACKUP_NAME="${DB_NAME}_backup_$(date +%Y%m%d_%H%M%S).sql"
BACKUP_DIR="/mnt/backup/"

# 备份数据库
mysqldump -u ${DB_USER} -p${DB_PASSWORD} ${DB_NAME} > ${BACKUP_DIR}${BACKUP_NAME}

# 删除超过14天的备份文件
find ${BACKUP_DIR} -mtime +14 -type f -name "${DB_NAME}_backup_*" -delete

其中,需要替换用户名、密码和数据库名。

脚本中先定义了需要备份的数据库信息,包括用户名、密码和数据库名,然后定义了备份后的文件名和备份目录。备份时使用mysqldump命令将数据库内容备份到指定目录,并将备份文件名命名为 数据库名_backup_年月日_小时分钟秒.sql。备份完成后,通过find命令查找超过14天的备份文件并删除掉。

如果脚本编写完成,按下 Ctrl+X 保存并退出编辑器。

3. 赋予脚本执行权限

在终端中输入以下命令赋予脚本执行权限:

sudo chmod +x ~/backup.sh

4. 设置定时任务

在终端中输入以下命令创建新的定时任务:

crontab -e

在打开的编辑器中添加以下内容:

0 2 * * * ~/backup.sh

上面的内容表示,在每天凌晨2点执行备份任务。如果需要调整备份时间,请根据Crontab的语法格式自行调整。例如,如果需要在每周一的晚上7点备份,可以写成:

0 19 * * 1 ~/backup.sh

添加完成后,按下 Ctrl+X 保存并退出编辑器。

5. 示例说明

示例一

假设我们需要定时备份MySQL中的MyBlog数据库,我们可以这样编写备份脚本:

#!/bin/bash

# 定义需要备份的数据库名称、备份后的文件名和备份目录
DB_USER="root"
DB_PASSWORD="password"
DB_NAME="MyBlog"
BACKUP_NAME="${DB_NAME}_backup_$(date +%Y%m%d_%H%M%S).sql"
BACKUP_DIR="/mnt/backup/"

# 备份数据库
mysqldump -u ${DB_USER} -p${DB_PASSWORD} ${DB_NAME} > ${BACKUP_DIR}${BACKUP_NAME}

# 删除超过14天的备份文件
find ${BACKUP_DIR} -mtime +14 -type f -name "${DB_NAME}_backup_*" -delete

然后将这个脚本保存为 ~/backup.sh

接下来设置定时任务,在每天凌晨2点备份MyBlog数据库:

0 2 * * * ~/backup.sh

这样,在每天凌晨2点,系统就会自动备份MyBlog数据库并删除超过14天的历史备份文件。

示例二

假设我们有一个名为MyShop的MySQL数据库,需要在每周一的晚上7点备份,我们可以这样编写备份脚本:

#!/bin/bash

# 定义需要备份的数据库名称、备份后的文件名和备份目录
DB_USER="root"
DB_PASSWORD="password"
DB_NAME="MyShop"
BACKUP_NAME="${DB_NAME}_backup_$(date +%Y%m%d_%H%M%S).sql"
BACKUP_DIR="/mnt/backup/"

# 备份数据库
mysqldump -u ${DB_USER} -p${DB_PASSWORD} ${DB_NAME} > ${BACKUP_DIR}${BACKUP_NAME}

# 删除超过14天的备份文件
find ${BACKUP_DIR} -mtime +14 -type f -name "${DB_NAME}_backup_*" -delete

然后将这个脚本保存为 ~/backup.sh

接下来设置定时任务,在每周一的晚上7点备份MyShop数据库:

0 19 * * 1 ~/backup.sh

这样,在每周一的晚上7点,系统就会自动备份MyShop数据库并删除超过14天的历史备份文件。

综上所述,以上就是在Linux系统中定时备份MySQL数据库并删除以前的备份文件的攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux定时备份MySQL数据库并删除以前的备份文件(推荐) - Python技术站

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

相关文章

  • SQL 分隔数据转换为多值IN列表

    当我们在进行 SQL 查询时,有时候需要将一个字段中的多个值以 IN 列表的方式传递给查询语句中的 IN 关键字。这时候,我们需要将该字段中的每个元素进行分割然后组成一个 IN 列表,这就是分隔数据转换为多值 IN 列表的操作。下面我们将介绍两个实例,分别用 MySQL 和 PostgreSQL 实现。 MySQL 中的分隔数据转换为多值 IN 列表 假设我…

    database 2023年3月27日
    00
  • 详解linux pwm驱动编写

    关于详解Linux PWM驱动编写的攻略,我们可以分为以下几个步骤进行。 步骤一:准备工作 在编写PWM驱动程序前,我们需要先了解一下硬件平台的PWM控制器的注册方式,这样才能在Linux驱动中使用。在实际工程中,可以通过读取设备文件 /sys/kernel/debug/pwm,通过查看 pwmchipN 的值来确定硬件平台的PWM控制器的数量和编号。 读取…

    database 2023年5月22日
    00
  • SQL 查找满足多个查询条件的行

    SQL是一种用于管理关系型数据库的编程语言,常常用于处理大量数据并从中检索特定的内容。当需要查找满足多个查询条件的行时,可以利用SQL中的“AND”和“OR”等逻辑运算符来实现。下面将详细讲解SQL查找满足多个查询条件的行的完整攻略。 查找满足多个查询条件的行的基本结构 SQL中可以使用SELECT语句来查找特定的行,同时还可以使用WHERE语句来指定特定的…

    database 2023年3月27日
    00
  • Redis的阻塞式列表解析

      1.   命令帮助 通过Redis-cli中的help进行查看: 127.0.0.1:6379>help BLPOP     BLPOP key [key …] timeout   summary: Remove and get the first element ina list, or block until one is availabl…

    Redis 2023年4月12日
    00
  • Linux 集群技术

    Linux 集群技术详解 什么是 Linux 集群技术? Linux 集群技术是利用多台计算机(通常是服务器)组成一个集群,以达到提高系统可用性、可扩展性、负载均衡等目的。这些计算机之间通过网络通信进行交互,并共享数据和资源。 常见的 Linux 集群技术 Linux 集群技术有很多种,常见的包括: 1. 负载均衡集群 负载均衡集群的目的是将请求分布到多台服…

    database 2023年5月22日
    00
  • 查找MySQL中查询慢的SQL语句方法

    查找MySQL中查询慢的SQL语句,可以通过以下步骤进行: 1. 开启慢查询日志 在MySQL配置文件中开启慢查询日志,记录执行时间超过指定阈值的SQL语句,以便后续分析调优。在配置文件 my.cnf 或 my.ini 中添加以下代码: slow_query_log = 1 slow_query_log_file = /path/to/slowquery.l…

    database 2023年5月19日
    00
  • cmd中MySQL中文数据乱码问题解决方法

    下面是详细讲解“cmd中MySQL中文数据乱码问题解决方法”的完整攻略。 问题背景 在使用cmd命令行窗口操作MySQL数据库时,有时会遇到中文数据乱码问题,这主要是由于cmd默认使用的编码格式为gbk,而MySQL默认使用的编码格式为utf8,两者不兼容所导致的。 解决方法 (以下操作均在cmd命令行窗口中进行) 1. 修改MySQL客户端默认编码格式为g…

    database 2023年5月18日
    00
  • Java关键字之instanceof详解

    Java关键字之instanceof详解 什么是instanceof? instanceof是Java的一个关键字,常用于判断一个对象是否是某个类的实例。 instanceof的语法 instanceof的语法为: object instanceof class 其中,object是对象名称,class是类名或接口名。 使用示例 示例1:判断对象是否为类的实…

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