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日

相关文章

  • PHP网页安全认证的实例详解

    PHP网页安全认证的实例详解 1、认证的概念 Web安全认证指的是在进行用户身份验证、授权和保护用户数据等方面确保Web应用程序能够安全地使用的一组技术。 在PHP中,通过会话管理和身份验证等技术对Web应用程序的安全性进行提高。 2、认证技术 PHP中的认证主要通过$_SESSION和$_COOKIE两个超全局变量以及header()函数实现。 2.1、$…

    database 2023年5月19日
    00
  • Redis源码编译安装及简单配置

    Redis官网 安装操作步骤 # 安装必要工具包 [root@centos7 ~]#yum -y install gcc jemalloc-devel # 解压 [root@centos7 ~]#tar xvf redis-5.0.9.tar.gz # 进入目录 [root@centos7 ~]#cd redis-5.0.9/ # 编译安装 [root@ce…

    Redis 2023年4月13日
    00
  • Redis实现分布式爬虫

    redis分布式爬虫  概念:多台机器上可以执行同一个爬虫程序,实现网站数据的爬取 原生的scrapy是不可以实现分布式爬虫, 原因如下: 调度器无法共享 管道无法共享 scrapy-redis组件:专门为scrapy开发的一套组件。 该组件可以让scrapy实现分布式 pip install scrapy-redis 分布式爬取的流程: 1 redis配置…

    Redis 2023年4月12日
    00
  • Mysql错误Every derived table must have its own alias解决方法

    MySQL错误 “Every derived table must have its own alias” 通常是因为SQL语句当中存在一个派生表(Derived Table),但没有为该表定义一个别名(Alias)。下面是解决这个错误的几种方法。 方法1:为派生表定义别名 在使用派生表时,必须为其指定一个别名。例如: SELECT t1.id FROM (…

    database 2023年5月21日
    00
  • 排查Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl

    首先,”Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl”错误提示通常是由于应用程序与MySQL数据库连接的瞬间连接中断或数据库连接池中连接关闭导致的。 以下是排查”Failed to validate connection com.mysql.cj.jdbc.ConnectionI…

    database 2023年5月22日
    00
  • mysql杀进程脚本

    mysql>kill thread_id; kill掉第一个锁表的进程, 依然没有改善. 既然不改善, 咱们就想办法将所有锁表的进程kill掉吧, 简单的脚本如下. #!/bin/bashmysql -u root -e “show processlist” | grep -i “Locked” >> locked_log.txt for …

    MySQL 2023年4月12日
    00
  • redis宕机处理方案

    最简单防止数据丢失   搭集群: 分n组  每组有两个机器 主机和备机   心跳检测:每隔一段时间备机会ping一下主机  主机回一个pong   容灾:主机数据同步给备机   扩容:redis中槽范围0-16383,一共是16384个槽,将这些槽分给对应组机器   负载均衡:redis会将key使用crc16索法进行计算.会得出一个纯数字的值余数落到那个s…

    Redis 2023年4月12日
    00
  • mysql-client ERROR 2002解决方法

    主机环境:debian 8 开发环境 :xampp 安装 mysql-client: #apt-get install mysql-client 启动xampp mysql环境: #/opt/lampp/./lampp startmysql 连接mysql  会报2002 错误: ERROR 2002 : Can’t connect to local MyS…

    MySQL 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部