linux中mysql定时备份与恢复

  1. 创建文件夹,/data/mysql8/backup/mysql

mkdir -p /data/mysql8/backup/mysql
  1. 在“backup”文件夹中创建“备份”,“恢复”,“删除备份文件”的三个sh文件,

“mysql”文件夹是存备份数据文件的。

#备份数据库
vi mysql_backup.sh 
#恢复数据库
vi mysql_restore.sh
#删除备份文件
vi remove_backup.sh
  1. 再创建一个配置文件用于读取数据库,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
  1. 添加定时任务

#在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
  1. 恢复数据库sh使用方式

cd /data/mysql8/backup
./mysql_restore.sh ./mysql/要恢复的备份文件.sql.gz
  1. 我的目录如下

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值