开源一个mysql备份的shell脚本

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 开源一个mysql备份的shell脚本

image.png

脚本说明:    脚本默认备份全库,也可以备份某个表,可以设置保留周期,结果压缩,备份结果发送邮件通知


#!/bin/bash
# 数据表名称,可以为空
table_name=$1
# 数据库名称
database_name=test_data
# 备份周期,单位为天
backup_period=30
# 备份目录
backup_dir=/date/mysql/backup
# 邮箱地址
email_address=xxxxx@mail.qq
# MySQL账号
mysql_user=root
# MySQL密码
mysql_password=root1234
# 获取当前日期
date_str=`date +%Y-%m-%d`
# 备份文件名
if [[ -z "$table_name" ]]; then
    backup_file_name="${database_name}_${date_str}.sql"
else
    backup_file_name="${database_name}_${table_name}_${date_str}.sql"
fi
# 压缩后备份文件名
if [[ -z "$table_name" ]]; then
    compressed_backup_file_name="${database_name}_${date_str}.tar.gz"
else
    compressed_backup_file_name="${database_name}_${table_name}_${date_str}.tar.gz"
fi
# 备份文件路径
backup_file_path="${backup_dir}/${backup_file_name}"
# 压缩后备份文件路径
compressed_backup_file_path="${backup_dir}/${compressed_backup_file_name}"
# 检查备份目录是否存在,如果不存在则创建
if [[ ! -d "$backup_dir" ]]; then
    mkdir -p "$backup_dir"
fi
# 备份MySQL数据表
if [[ -z "$table_name" ]]; then
    mysqldump -u"$mysql_user" -p"$mysql_password" "$database_name" > "$backup_file_path"
else
    mysqldump -u"$mysql_user" -p"$mysql_password" "$database_name" "$table_name" > "$backup_file_path"
fi
# 压缩备份文件
tar -czvf "$compressed_backup_file_path" "$backup_file_path"
# 删除备份文件
rm -f "$backup_file_path"
# 检查备份结果
if [[ -f "$compressed_backup_file_path" ]]; then
    echo "备份成功!"
    echo "备份文件路径:$compressed_backup_file_path"
    subject="MySQL备份成功"
    body="MySQL备份成功,备份文件路径:$compressed_backup_file_path"
else
    echo "备份失败!"
    subject="MySQL备份失败"
    body="MySQL备份失败!"
fi
# 发送备份结果到指定邮箱
echo "$body" | mail -s "$subject" "$email_address"
# 删除过期备份文件
find "$backup_dir" -mtime +"$backup_period" -name "*.tar.gz" -exec rm {} \;


执行案例:

#默认备份整库
./mysql_back.sh
#备份test_table_name表
./mysql_back.sh test_table_name  

觉得不错别忘了给波哥点赞,分享哦!

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
116 1
|
1月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
69 2
6种方法打造出色的Shell脚本
|
1月前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
65 1
|
1月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
109 3
|
1月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
48 3
|
1月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
60 2
|
1月前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
180 4
|
2月前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
62 6
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
SQL JSON 关系型数据库
MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
【10月更文挑战第3天】MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
199 5