mysql备份

安装客户端软件

apt install redis-tools -y
apt install default-mysql-client -y

0 2 * * * /root/shellscript/dumpmysql.sh > /root/shellscript/log/dumpmysql.log 2>&1

备份脚本

#!/bin/bash


# 获取脚本开始执行的时间戳(秒)
start_time=$(date +%s)

# MySQL 连接参数
MYSQL_HOST="127.0.0.1"
MYSQL_USER="root"
MYSQL_PASSWORD="123456"
MYSQL_PORT="3306"

time=$(date "+%Y-%m-%d %H:%M:%S")
echo "当前备份时间:${time}"
dir=$(date "+%Y%m%d")

# 输出目录
OUTPUT_DIR="/root/backupmysql/$dir"

# 确保输出目录存在
mkdir -p "$OUTPUT_DIR"

# 获取所有非系统库的名称
DATABASES=$(mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "SHOW DATABASES;" | grep -Ev "^(information_schema|mysql|performance_schema|sys|test)$")

# 遍历每个数据库并导出
for DB in $DATABASES; do
    if [ "$DB" != "Database" ]; then  # 跳过表头
        echo "Exporting database: $DB"
        mysqldump -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$DB" > "$OUTPUT_DIR/$DB.sql"
        if [ $? -eq 0 ]; then
            echo "Backup of $DB completed successfully."
        else
            echo "Failed to backup $DB."
        fi
    fi
done


# 获取脚本结束执行的时间戳(秒)
end_time=$(date +%s)

# 计算执行耗时(秒)
elapsed_time=$((end_time - start_time))

echo "All databases have been exported to $OUTPUT_DIR. 耗时:${elapsed_time}秒"

# 删除10天前的备份
old_date=$(date -d "10 days ago" +'%Y%m%d')
old_backup_file="/root/backupmysql/${old_date}"
if [ -d "$old_backup_file" ]; then
    rm -rf "$old_backup_file"
    echo "Deleted old backup file: $old_backup_file"
fi
posted @ 2025-07-11 17:17  Ranger-dev  阅读(4)  评论(0)    收藏  举报