服务器在线 - 服务器软件 - 网站地图 服务器在线,专注于服务器技术!

当前位置:主页 > 编程脚本 > Shell > 正文

mysql innodb备份所有数据库脚本

时间:2024-02-26    来源:未知    投稿:admin    点击:

需求:
centos操作系统;
备份本机所有数据库;
将文件备份放到按日期命令的文件夹,年+年+日+时;
备份后将文件压缩,删除原sql文件;
保留最新一份,将历史备份删除;
所有echo以中文输出。


代码:
#!/bin/bash  
 
# MySQL连接参数  
USER='root'  
PASSWORD='123456'  
HOST='localhost'  
 
# 备份基础目录  
BASE_BACKUP_DIR='/opt/backup'  
 

# 当前时间  
CURRENT_TIME=$(date +%Y%m%d%H)  

# 计算一个小时前的时间  
ONE_HOUR_AGO=$(date -d "1 hour ago" +%Y%m%d%H)  

# 遍历备份目录中的所有文件夹  
for BACKUP_SUBDIR in "${BASE_BACKUP_DIR}"/*; do  
    # 提取文件夹名称中的日期部分  
    SUBDIR_DATE=$(basename "$BACKUP_SUBDIR")  

    # 如果文件夹名称中的日期早于一个小时前的时间  
    if [[ "$SUBDIR_DATE" < "$ONE_HOUR_AGO" ]]; then  
        # 删除该文件夹及其内容  
        echo "删除更早的备份文件夹:$BACKUP_SUBDIR"  
        rm -rf "$BACKUP_SUBDIR"  
    fi  
done  

# 获取当前日期和时间  
DATE=$(date +%Y%m%d%H)  
BACKUP_SUBDIR="${BASE_BACKUP_DIR}/${DATE}"  

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

# 获取所有数据库名  
DATABASES=$(mysql -u$USER -p$PASSWORD -h$HOST -Nse "SHOW DATABASES;" | grep -Ev "(Database|information_schema|mysql|performance_schema|sys)")  

# 为每个数据库创建备份  
for DB in $DATABASES; do  
    # 构造备份文件名  
    BACKUP_FILE="${BACKUP_SUBDIR}/${DB}.tar.gz"  
    BACKUP_SQL_FILE="${BACKUP_SUBDIR}/${DB}.sql"  

    # 创建数据库的SQL备份文件  
    mysqldump -u$USER -p$PASSWORD -h$HOST $DB > "$BACKUP_SQL_FILE"  

    # 检查mysqldump是否成功  
    if [ $? -eq 0 ]; then  
        echo "数据库 ${DB} 的SQL备份文件已生成:${BACKUP_SQL_FILE}"  
        # 将备份文件压缩  
        tar -czf "$BACKUP_FILE" "$BACKUP_SQL_FILE"  

        # 检查是否压缩成功  
        if [ $? -eq 0 ]; then  
            echo "备份文件已成功压缩为 ${BACKUP_FILE}。"  

            # 删除未压缩的备份文件  
            rm "$BACKUP_SQL_FILE"  
        else  
            echo "压缩备份文件时发生错误。"  
            # 如果压缩失败,保留原始的SQL备份文件  
            rm -f "$BACKUP_FILE"  
        fi  
    else  
        echo "在导出数据库 ${DB} 时发生错误。"  
        # 如果mysqldump失败,删除生成的SQL备份文件  
        rm -f "$BACKUP_SQL_FILE"  
    fi  
done   
echo "全部完成。"



如果您的问题仍未解决,还可以加入服务器在线技术交流QQ群:8017413寻求帮助。


上一篇:mysql备份所有数据库脚本
下一篇:没有了