51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

开源一个mysql备份的shell脚本

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

#!/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  
赞(2)
未经允许不得转载:工具盒子 » 开源一个mysql备份的shell脚本