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

当前位置:主页 > 游戏服务器 > DNF > 正文

DNF自动备份数据库脚本

时间:2024-05-28    来源:未知    投稿:admin    点击:

脚本内容:
#!/bin/bash 
 
# MySQL连接参数  
USER='game'  
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 "全部完成。"


添加计划任务:
crontab -e 添加任务

0 */8 * * * Mysql_backup
或者
0 1,7,13,19 * * * /home/mysql_backup

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


上一篇:没有了
下一篇:没有了
最新热点内容
推荐内容