MySQL数据库手动备份

MySQL数据库备份

1.问题

1)输入MySQL用户名、密码、要备份的数据库名称存在错误

2)备份目录是否存在

3)当备份文件超过最大备份文件大小

2.分析

1)使用read -sp来输入密码时密码不会显示到屏幕上会更加的安全

2)创建一个包含日期和时间的变量

3)使用[ -d $BFLJ ]来判断路径是否存在

4)创建备份文件的完整路径

5)使用mysqldump命令进行备份

6)使用$?来查看上一条命令、检查是否备份成功

7)使用du -mb来获取文件大小并检查是否超过最大备份文件大小

8)使用gzip压缩备份文件

3.流程图

4.实现

#!/bin/bash

#提示用户输入MySQL用户名、密码、数据库名称和备份路径

read -p "请输入MySQL用户名:" USER

read -sp "请输入MySQL密码: " PASSWORD

echo

read -p "请输入要备份的数据库名称: " NAME

read -p "请输入备份文件保存的路径: " BFLJ

#获取当前日期和时间,用于命名备份文件

DATETIME=$(date +%Y%m%d_%H%M%S)

#判断备份目录是否存在

if [ -d $BFLJ ]; then

    echo "目录存在"

else

    echo "目录不存在"

    exit

fi

#最大备份文件大小(单位:MB)

MAX_SIZE=500

#创建备份文件的完整路径

WZ="$BFLJ/$NAME$DATETIME.sql"

#使用mysqldump命令进行备份

mysqldump -u "$USER" -p"$PASSWORD" "$NAME" > "$WZ"

#检查备份是否成功

if [ $? -eq 0 ]; then

echo "数据库备份成功!备份文件保存在 $BFLJ"

    #备份文件大小

    SIZE=$(du -mb "$WZ" | cut -f1)

    if [ "$SIZE" -gt "$MAX_SIZE" ]; then

        echo "备份文件 $WZ 大小超过了 $MAX_SIZE MB,正在进行压缩..."

        #使用gzip压缩备份文件

        gzip "$WZ"

        WZ="$BACKUP_FILE.gz"

        echo "备份文件已压缩为 $WZ"

        fi

else

    echo "数据库备份失败!"

    rm -rf $WZ

    exit

fi

#可选:删除超过7天的旧备份文件(根据需求调整)

find "$BFLJ" -type f -name "*.sql" -mtime +7 -exec rm {} \;

#脚本结束

exit

5.实现解析

1)使用read -p和read -sp来输入基本信息

2)DATETIME=$(date +%Y%m%d_%H%M%S)声明获取当前日期和时间的变量

3)使用if [ -d $BFLJ ]判断备份目录存不存在,存在则继续执行,不存在则直接退出脚本

4)声明最大备份文件的大小

5)创建备份文件的完整路径

6)使用mysqldump命令进行备份

7)if [ $? -eq 0 ]检查是否备份成功,为零则表示备份成功,不为零则表示备份失败并删除创建的备份文件,退出脚本

8)备份成功后使用判断文件的大小,超过了最大值则使用gzip压缩备份文件

9)find命令查找超过7天的旧备份文件并使用rm命令进行删除(可根据自己的需求调整)

6.验证

首先创建几个库并查看

1)备份成功

2)当文件超过最大备份文件大小(这里设置成500MB,为了方便实验)

3)当备份目录不存在时

4)当用户和密码输入错误或数据库不存在时

用户和密码输入错误

数据库不存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值