mysqlbinlog的基础知识

对mysql有一定了解的朋友,想必都听说过mysqlbinlog这个东东吧。mysqlbinlog其实就是mysql的操作日志,记录mysql的一些操作过程。所括mysql的增删改查和创建表等记录。同时,它还支持数据的还原等等。

需要先在mysql的配置文件中进行如下配置

#配置文件 /etc/my.cnf (可能会由于每个人的安装方法不一样,所以目录结构会有所不同,但都是这么个意思)
#需要注意的是,进行这个配置之后,需要重启mysql服务
#重启的命命令为 systemctl restart mysql

[mysqld]
log-bin=/usr/local/mysql5.7/data/log/mysql-bin   #配置日志文件的路径和前缀名字
server-id=1  #这个id的值不能跟其他的重复
binlog_format=MIXED

检查下是对对mysqlbinlog进行了开启状态(也就是说只能在开启的状态下才能进行下面的操作)

#sql的词句
show variables like '%log_bin%';

 show variables like '%log_%'; #查看mysqlbinlog日志的文件路径

show master logs; #查看所有mysqlbinlog的日志文件

show master status; #查看当前正在写入日志的那个日志文件(由于会有很多个日志文件,所以需要找到当前正在写入的那个文件,这样查找日志才比较方便)

flush logs; #开启一个新的日志文件(即重新生成一个日志文件,之后的文件都在新的文件里写入,直到新的文件写满为止)

show master logs; #再次执行查看所有日志的命令,会发现比刚才多了一个文件,多出来的那个新文件就是重新生成的新的文件

 

#执行一下linux的命令,会出现如下结果

mysqlbinlog mysql-bin.000006;

#需要注意的就是路径问题
#因为我当前的路径是在 mysql-bin.000006所在文件的目录下
#如果不是在这个路径
#最好的方法就是 mysqlbinlog /usr/local/mysql5.7/data/mysql-bin.000006
#当然,如果mysql没有配置环竟变量的话,mysqlbinlog的命令也只能到 /usr/local/mysql5.7/bin/ 目录下执行

show binlog events in 'mysql-bin.000001'; #查看日志记录(简洁式)

注意图表中的两个pos,一个是开始的节点,一个是结束的节点。那么,根据这两个节点,我们就可以用它来做一此事情。比如数据恢复等等。

其实,mysqlbinlog并不是完全万能,它只不过是根据日志来记录你对数据库所做的操作。为此,我们只能通过日志来恢复。说回刚才的那两个节点,一般来说,如果我们要恢复某一个操作记录,我们找的开始点节是以上一个结束节点为commit的那个节点为开始结节,而结整节点是以commit为结束的那个节点。我来截个图(下面那个图是我修改配置后的图,但不影响阅读)

比如说,我要恢复 插入表id为13的那条记录,如下图所示(绿色的框框和文字)

 所以,在记录的时候,我们可以这样子写

mysqlbinlog mysql-b.000001 --start-position 715 --stop-position 996 -uroot -p >  /bak.sql
#注意,后面那个 【/bak.sql】是生成的sql文件,我是放在根目录下
#如果你需要放在别的目录,请注意路径
#比如 /usr/local/xxxx 什么什么的,可以这样写
#文件名随意

那么,有了这个sql文件,我们就可以回到mysql里面对这个记录进行导入了,导入的方法也就是一条sql语句。

source /bak.sql #同样需要注意路径

结束语:

最后的最后,我需要说明的就是mysqlbinlog虽然强大,但它始终都不是万能。它只是一个记录数据库操作的日记而已,并非版本控制。所以,它并没有我们像我们代码那样有版本回退的功能。还是那句"工资有价,数据无价。操作数据需谨慎"。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值