如果mysql不在环境变量中,请先将mysql放入环境变量
bash
#将mysql添加进环境变量中
export PATH=$PATH:/usr/local/mysql/bin/
#重新加载配置文件
source /etc/profile
新建一个脚本
bash
touch backup_all_databases.sh
脚本内容:
bash
#!/bin/bash
# MySQL登录信息
USER="root"
PASSWORD="123456"
# 备份目录
BACKUP_DIR="/home/mysqlbak/$(date +%Y%m%d)"
# 创建备份目录
mkdir -p "$BACKUP_DIR"
# 获取所有数据库名
DATABASES=$(mysql -u"$USER" -p"$PASSWORD" -Nse 'show databases')
# 遍历所有数据库进行备份
for DB in $DATABASES; do
# 跳过系统数据库
if [[ "$DB" == "information_schema" || "$DB" == "mysql" || "$DB" == "performance_schema" || "$DB" == "sys" ]]; then
continue
fi
# 生成备份文件名
BACKUP_FILE="$BACKUP_DIR/${DB}_$(date +%Y%m%d%H%M%S).sql"
# 执行mysqldump命令进行备份
mysqldump -u"$USER" -p"$PASSWORD" "$DB" > "$BACKUP_FILE"
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "Database $DB backed up to $BACKUP_FILE"
else
echo "Error backing up database $DB"
fi
done
echo "All databases backed up to $BACKUP_DIR"
需要给这个脚本文件执行权限:
bash
chmod +x backup_all_databases.sh
需要给这个脚本文件执行权限:
bash
./backup_all_databases.sh
自动执行
bash
vi /etc/crontab
#每天凌晨1点执行
0 1 * * * bash /home/backup_all_databases.sh
查看crontab服务状态:
bash
service crond status
手动启动crontab服务:
bash
service crond start
查看crontab服务是否已设置为开机启动,执行命令:
bash
ntsysv
加入开机自动启动:
bash
chkconfig --level 35 crond on