数据库备份与恢复

数据库备份与恢复

备份
创建备份目录

mkdir -p /home/mysql-bak/scripts
mkdir -p /home/mysql-bak/full
mkdir -p /home/mysql-bak/binlog

备份全部数据库(定时任务:每天0点)

1.vi /home/mysql-bak/scripts/backup_inno.sh

#!/bin/bash
mysqldump --master-data=2 --single-transaction --triggers --routines --events --max_allowed_packet=32M -B -A > /home/mysql-bak/full/data_`date +%F_%H-%M-%S`.sql

2.创建每天夜里0点执行的定时任务:
echo “0 0 * * * root sh /home/mysql-bak/scripts/backup_inno.sh > /dev/null 2>&1” >> /etc/crontab

binlog备份(定时任务:1小时一次)

1.vi /home/mysql-bak/scripts/rsync_binlog.sh

#!/bin/bash
rsync -avz /var/lib/mysql/mariadb-bin.* /home/mysql-bak/binlog/

2.设置1小时执行一次的定时任务
echo “0 */1 * * * root sh /home/mysql-bak/scripts/rsync_binlog.sh > /dev/null 2>&1” >> /etc/crontab

清理机制(定时任务:每天凌晨1点半)

数据库备份保留三天 & binlog保留七天

1.vi /home/mysql-bak/scripts/clean_file.sh

#!/bin/bash
find /home/mysql-bak/full -mtime +3 -name "*.sql" -exec rm "{}" ";"
find /home/mysql-bak/binlog -type f  -mtime +7 -exec rm {} \;

2.创建每天凌晨1点半执行的定时任务:
echo “30 1 * * * root sh /home/mysql-bak/scripts/clean_file.sh > /dev/null 2>&1” >> /etc/crontab

恢复
删除数据库文件

mkdir -p /var/lib/mysql-prebackup
cd /var/lib/mysql
mv !(mysql|performance_schema) /var/lib/mysql-prebackup

先恢复数据库到最近一个备份时间点

mysql < /home/mysql-bak/full/data_2022-09-08_07-24-51.sql
binlog补偿(指定最近时间点)
mysqlbinlog –stop-datetime=”2005-04-20 9:59:59” /home/mysql-bak/binlog/mariadb-bin.000056 | mysql

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值