MySQL备份Shell脚本的实现

 更新时间:2025年03月25日 09:21:38   作者:SAFE20242034  
本文主要介绍了Shell脚本来自动备份MySQL数据库,脚本会备份指定数据库或所有数据库,按日期命名备份文件以防止覆盖,并自动删除N天前的旧备份以节省空间,具有一定的参考价值,感兴趣的可以了解一下

你可以编写一个 Shell 脚本来自动备份 MySQL 数据库。下面是一个示例脚本,它会:

  • 备份指定数据库(或所有数据库)。
  • 按日期命名备份文件,防止覆盖。
  • 自动删除 N 天前的旧备份,节省空间。

示例:MySQL 备份 Shell 脚本

#!/bin/bash

# 配置部分
BACKUP_DIR="/backup/mysql"  # 备份存放目录
MYSQL_USER="root"           # MySQL 用户名
MYSQL_PASSWORD="yourpassword" # MySQL 密码
MYSQL_HOST="localhost"      # MySQL 服务器地址
DATABASE_NAME="your_database"  # 备份的数据库名,若要备份所有数据库,改为 --all-databases
RETENTION_DAYS=7            # 保留的天数,自动删除旧备份

# 获取当前日期
DATE=$(date +"%Y-%m-%d_%H-%M-%S")

# 备份文件名
BACKUP_FILE="$BACKUP_DIR/${DATABASE_NAME}_$DATE.sql.gz"

# 确保备份目录存在
mkdir -p "$BACKUP_DIR"

# 执行备份
mysqldump -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$DATABASE_NAME" | gzip > "$BACKUP_FILE"

# 检查备份是否成功
if [ $? -eq 0 ]; then
    echo "MySQL 备份成功: $BACKUP_FILE"
else
    echo "MySQL 备份失败!"
    exit 1
fi

# 删除 N 天前的旧备份
find "$BACKUP_DIR" -type f -name "${DATABASE_NAME}_*.sql.gz" -mtime +$RETENTION_DAYS -exec rm {} \;

echo "已清理 $RETENTION_DAYS 天前的旧备份"

使用方式

复制脚本到 Linux 服务器,如 /backup/mysql_backup.sh

修改脚本参数(数据库名、用户名、密码等)。

赋予执行权限

chmod +x /backup/mysql_backup.sh

手动运行测试

/backup/mysql_backup.sh

设置定时任务,每天凌晨 2 点自动备份:

crontab -e

添加:

0 2 * * * /backup/mysql_backup.sh >> /backup/backup.log 2>&1

这样,你的 MySQL 数据库就能每天自动备份并清理旧备份,确保数据安全!

到此这篇关于MySQL备份Shell脚本的实现的文章就介绍到这了,更多相关MySQL备份Shell脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在linux(Centos)中Mysql的端口修改保姆级教程(最新整理)

    在linux(Centos)中Mysql的端口修改保姆级教程(最新整理)

    本文详细介绍了如何在CentOS中通过配置文件修改MySQL的端口号,并提供了从切换到root用户到重启MySQL的完整步骤,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • 解决MySQL登录报错1130:1130 Host ***.***.***.*** is not allowed to connect to this MySQL server

    解决MySQL登录报错1130:1130 Host ***.***.***.*** is not allowe

    有时候在登录到MySQL服务器时会遇到1130错误,这是因为无法连接到MySQL服务器或其他一些原因,这篇文章主要给大家介绍了关于解决MySQL登录报错1130:1130 Host ***.***.***.*** is not allowed to connect to this MySQL server的相关资料,需要的朋友可以参考下
    2023-12-12
  • mysql整数数据类型深入解析

    mysql整数数据类型深入解析

    本篇文章是对mysql中的整数数据类型进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MySQL中的binary类型使用操作

    MySQL中的binary类型使用操作

    这篇文章主要介绍了MySQL中的binary类型使用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • MySQL 数据库 ALTER命令讲解

    MySQL 数据库 ALTER命令讲解

    MySQL 为关系型数据库(Relational Database Management System)。本文重点给大家介绍mysql数据库alert命令讲解,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-05-05
  • mysql中的utf8与utf8mb4存储及区别

    mysql中的utf8与utf8mb4存储及区别

    本文主要介绍了mysql中的utf8与utf8mb4存储及区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • MySQL Binlog 日志处理工具对比分析

    MySQL Binlog 日志处理工具对比分析

    这篇文章主要介绍了MySQL Binlog 日志处理工具对比分析的相关资料,帮助大家更好的理解和学习使用MySQL数据库,感兴趣的朋友可以了解下
    2021-03-03
  • mysql Event Scheduler: Failed to open table mysql.event

    mysql Event Scheduler: Failed to open table mysql.event

    这篇文章主要介绍了mysql Event Scheduler: Failed to open table mysql.event,需要的朋友可以参考下
    2016-04-04
  • MySQL DELETE速度提高的几种方法

    MySQL DELETE速度提高的几种方法

    提高MySQL中DELETE操作的速度通常涉及多个方面,包括优化查询、索引、表结构、硬件和配置等,本文主要介绍了MySQL DELETE速度提高的几种方法,感兴趣的可以了解一下
    2024-07-07
  • 最新MySql8.27主从复制及SpringBoot项目中的读写分离实战教程

    最新MySql8.27主从复制及SpringBoot项目中的读写分离实战教程

    MySQL主从复制是一个异步的复制过程,底层是基于MySQL1数据库自带的二进制日志功能,这篇文章主要介绍了最新MySql8.27主从复制及SpringBoot项目中的读写分离实战教程,需要的朋友可以参考下
    2022-08-08

最新评论