Mysql备份及binlog日志恢复数据

小伙伴们开发中遇到数据库被误删导致数据丢失的情况,备份的可以恢复部分数据,其他数据从binlog恢复

 

1.编写shell脚本数据库备份脚本备份数据库

#!/bin/sh
#database info
DB_USER="root"
DB_PASS="123456"
DB_HOST="127.0.0.1"

# Others vars
BIN_DIR="/usr/bin"            #the mysql bin path
BCK_DIR="/root/sqlbeifen"    #备份文件存储的位置,不存在自行创建
DATE=`date +%F-%H`
mysqldump -u$DB_USER -p$DB_PASS --flush-logs --all-databases  > $BCK_DIR/db_$DATE.sql #全量备份数据库并且刷新日志( --flush-logs刷新日志很重要,恢复时及时找到上次备份钱的biinlog文件)

根据需要加入定时任务执行,每天备份或每周备份根据需要随意

 

2.查看是否开启binlog日志,开启日志

mysql> show variables like 'log_bin';

显示已开启,若未开启请修改mysql配置文件开启binlog

Centos一般在/etc下的my.cnf文件,在[mysqld]添加如下代码

log-bin = /usr/local/var/mysql/logs/mysql-bin.log #存储位置(目录不存在自行创建)
expire-logs-days = 14 #保留天数
max-binlog-size = 500M #但文件最大空间
server-id = 1

重启mysql

查看日志状态
show master status; 

 


3.如何回复丢失数据

首先导入最新一次的备份sql(此步奏自行百度),再找到对应时间点的最后一个binlog文件

备份时会刷新log,可根据备份时间找到最后一次备份前的binlog日志,如为mysql-binlog.000002

找到需要恢复的操作节点(2583删除,那我我们恢复到2342结束不就可以了),有开始位置和结束位置(无需开始或结束位置删除对应参数 --start-position 或 --stop-position)则执行下面的命令,请更换对你你系统内mysql的安装路径

执行命令

/Applications/MxSrvs/bin/mysql/bin/mysqlbinlog /Applications/MxSrvs/binlog/mysql-bin.000002 --stop-position=2342 | /Applications/MxSrvs/bin/mysql/bin/mysql -uroot -p

输入密码后看数据是否恢复

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值