1.先编辑MySQL的配置文件
vi /etc/my.cnf,添加以下登录信息
[client]
host=localhost
user=root
password='数据库root密码'

2.编写脚本
#!/bin/bash
#保存备份个数,最多保留10个文件
number=10
#备份保存路径
backup_dir=/data/mysqlbackup
#日期
date=`date +%Y-%m-%d-%H-%M-%S`
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
#备份数据库
mysqldump --defaults-extra-file=/etc/my.cnf --all-databases > $backup_dir/MySQL-$date.sql
#写创建备份日志
echo "create $backup_dir/mysql-$date.dupm" >> $backup_dir/log.txt
#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`
if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
#写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi
3.添加定时任务
crontab -e
添加下面这行,每晚8点,准时备份
00 20 * * * /bin/bash /mnt/data/backup_mysql.sh
####脚本命名为backup_mysql.sh,存放在/mnt/data目录下##########
本文介绍了如何编辑MySQL配置文件,编写一个使用shell脚本进行全库备份的流程,包括设置备份保留数量、创建备份目录、执行mysqldump命令,以及通过crontab设置定时任务进行每日8点的自动备份。同时,脚本还包含了日志记录和旧备份的删除功能,以保持备份文件的数量不超过设定值。
145

被折叠的 条评论
为什么被折叠?



