#!/bin/bash
# Filename: backup_mysql.sh
# Version: 1.0
# Date: 2023/03/09
# Author: xiajinbiao
# Email:
# Description: MYSQL用户数据库的备份
# Notes: 将脚本加入crontab中,每天2点定时执行
# 你的 MySQL 地址
#MYSQL_HOST="127.0.0.1"
# 你的 MySQL 端口号
MYSQL_PORT="3306"
# 你的 MySQL 用户名
MYSQL_USER="root"
# 你的 MySQL 密码
MYSQL_PASSWORD="mysql8028,!"
# 备份路径
BACKUP=/data/backup_mysql
# 当前时间
DATETIME=$(date +%Y%m%d%H%M%S)
# 自动获得所有的数据库
# mysql文件的全路径
DATABASES=`/application/mysql8028/bin/mysql -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -e "SHOW DATABASES;"`
# 创建备份目录
mkdir -p "${BACKUP}/$DATETIME"
for db in $DATABASES; do
# 排除表头和一些无需备份的数据库
if [[ "$db" != "Database" ]] && [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] ; then
echo "正在备份数据库: $db"
# 备份操作
# mysqldump的全路径
/application/mysql8028/bin/mysqldump -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} --databases $db > ${BACKUP}/$DATETIME/$db.sql
echo "数据库【$db】已成功备份到:${BACKUP}/$DATETIME/$db.sql 下"
fi
done
# 删除7天前的文件
find $BACKUP -type f -mtime +7 -exec rm -f {} \;
echo "备份成功结束~"
echo "================================================"
00 1 * * * /bin/bash /data/backup_mysql/backup_mysql.sh >> /data/backup_mysql/backup_mysql.log