创建文件夹,/data/mysql8/backup/mysql
mkdir -p /data/mysql8/backup/mysql
在“backup”文件夹中创建“备份”,“恢复”,“删除备份文件”的三个sh文件,
“mysql”文件夹是存备份数据文件的。
#备份数据库
vi mysql_backup.sh
#恢复数据库
vi mysql_restore.sh
#删除备份文件
vi remove_backup.sh
再创建一个配置文件用于读取数据库,mysql7.5以上版本都需要用配置文件不然报错
vi my_mysql.cnf
4. 以下是新建配置文件中和sh中的内容
#配置文件my_mysql.cnf ---------->>
[mysqldump]
max_allowed_packet=1024M #备份最大文件不能超过的值
host=127.0.0.1
port=7008 #mysql端口
user=root #mysql登录用户名
password='root' #mysql登录密码
[mysql]
host=127.0.0.1
port=7008
user=root
password='root'
#备份数据库mysql_backup.sh ---------->>
db_name='btb_coffee'
backup_dir='/data/mysql8/backup/mysql/'
current_time=$(date +'%Y-%m-%d_%H%M%S')
filepath=$backup_dir$current_time'.sql.gz'
echo '开始导出数据库...'
#数据库用户和密码写在my_mysql.cnf配置文件中
mysqldump --defaults-extra-file=/data/mysql8/backup/my_mysql.cnf $db_name | gzip > $filepath
echo '导出成功,文件名为: '$filepath
#恢复数据库mysql_restore.sh ---------->>
if [ -z $1 ] || [ ! -f $1 ]
then
echo "请输入sql压缩文件(*.sql.gz)"
exit 1
fi
db_name='btb_coffee'
base_dir='/data/mysql8/backup/mysql'
gz_sql_file=`basename $1`
file_ext=${gz_sql_file##*.}
if [ $file_ext != 'gz' ]
then
echo '文件格式不正确,请输入 .sql.gz 文件'
exit 1
fi
sql_file=${gz_sql_file%.*}
echo '解压文件中...'
gzip -dc $base_dir$gz_sql_file > $base_dir$sql_file
echo '解压完成.'
echo '开始导入恢复数据库...'
mysql --defaults-extra-file=/data/mysql8/backup/my_mysql.cnf $db_name < $base_dir$sql_file
if [ -f $base_dir$sql_file ]
then
echo '删除临时文件.'
rm -f $base_dir$sql_file
fi
echo '导入恢复数据完成.'
# 删除备份文件remove_backup.sh ---------->>
# 删除7天前的备份
find /data/mysql8/backup/mysql -type f -mtime +7 | xargs rm -f
添加定时任务
#在linux中输入如下命令,表示修改定时任务
crontab -e
#在里面添加定时任务的sh文件,表示每天凌晨3点执行一次清除备份文件
0 3 * * * /data/mysql8/backup/mysql_remove_backup.sh
#表示每天凌晨2点执行一次数据库备份,备份后的文件在/data/mysql8/backup/mysql/中可查询
0 2 * * * /data/mysql8/backup/mysql_backup.sh
#设置好后crontab -l 可查询定时任务
crontab -l
恢复数据库sh使用方式
cd /data/mysql8/backup
./mysql_restore.sh ./mysql/要恢复的备份文件.sql.gz
我的目录如下
![](https://img-blog.csdnimg.cn/img_convert/87723976b8e5a593a5855eaa3393264c.png)