开源shell脚本系列之mysql灵活备份脚本

6b6b063c2b33722ec346c006b993a079.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
觉得不错别忘了给波哥点赞,分享哦!

波哥

IT行业近二十年的IT老炮。常年潜伏于国企、各一二线大厂中。硬件集成入行,直至虚拟技术、容器化。岗位历经系统集成、DBA、全栈开发、sre、项目经理、产品经理、部门总监。

主要作品:

  • IT类资源汇聚门户:https://www.98dev.com

  • 各大短视频平台:98dev

  • 各大主要技术论坛博客:IT运维技术圈

  • 长视频教学作品:《波哥讲网络》《波哥讲git》《波哥讲gitlab》

  • 小程序:IT面试精选

  • 构建技术社区:+V itboge1521 入学习交流群

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值