热门标签

释放双眼,带上耳机,听听看~!

关于mysql binlog二进制-仙士可博客-后端工程师的成长之路

关于mysql binlog二进制

binlog

在mysql中,当发生数据变更时,都会将变更数据的语句,通过二进制形式,存储到binlog日志文件中.

通过binlog文件,你可以查看mysql一段时间内,对数据库的所有改动.

也可以通过binlog文件,进行数据恢复,以及集群同步.  


binlog常用配置参数

[binlog]log_bin = mysql-bin # {on | off | base_name}指定是否启用记录二进制日志或者指定一个日志路径sql_log_bin = on # { on | off }    指定是否启用记录二进制日志expire_logs_days=7  #  指定自动删除二进制日志的时间,即日志过期时间log_bin_index= /usr/local/mysql/mysql-bin.index    # 指定mysql-bin.index文件的路径binlog_format = mixed # { mixed | row | statement }    指定二进制日志基于什么模式记录max_binlog_size = 100M #   指定二进制日志文件最大值binlog_cache_size = 4M #   指定事务日志缓存区大小max_binlog_cache_size= 64M #   指定二进制日志缓存最大大小sync_binlog = 0  # { 0 | n }   指定写缓冲多少次,刷一次盘

binlog模式

在上面我们讲到了,mysql发生数据变更后,才会将变更的语句,通过二进制形式存储,而通过存储语句的方式,mysql将其分为了3种方式.  

行模式(row level)

binlog日志将会记录数据库中每一条的数据变更,例如当你delete 数据100万条时,会产生100万条记录,用于记录每一行数据的变更情况.  

优点:此模式可以非常精确的记录每条记录的变更细节.不需要依赖sql的上下文关系,例如存储过程,触发器.

缺点:此模式会产生大量的日志内容.  

语句模式(Statement Level)

mysql默认模式,和行模式不同的事,语句模式会直接记录mysql执行数据变更的语句,例如delete 100万数据,它只会记录该delete语句,如果需要调用binlog时,将会通过记录的这个语句,重新执行一遍delete.  

混合模式(mix)

在此模式下,mysql会根据每条执行的语句,区分对待应用存储的模式.

当表结构发生变化时,将使用语句模式存储

当表数据发生update/delete操作时,使用行模式存储

    

数据库删库后,如何恢复数据

当数据库被删除后,我们可以通过每周/每天备份的数据库文件中,恢复之前的数据.

同时通过binlog,筛选出备份后未恢复的数据,通过mysqlbinlog命令导出sql,执行回去,即可恢复大部分的数据了.

本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn

热门标签

请先登录后发表评论
  • 最新评论
  • 总共1条评论
热门标签

tpwind:这个只能回复吗

2020-05-22 16:47:35 回复

热门标签
  • 仙士可 回复 tpwind:binlog可用于数据恢复,主从数据同步等
  • 2020-05-23 10:17:30 回复

最新评论

    热门标签

  • 惜@望2022-02-10 15:33:28
  • go 安装protobuf…中评论
  • 我们对接协议用的一般都是protobuf2或者3…
    热门标签

  • 和你一起闪耀到世界尽头2021-10-26 20:30:19
  • jenkins实现easyswoole …中评论
  • 牛逼阿 仙哥 每天王者到半夜 还能学习产出…
  • 本站由白俊遥博客程序搭建

    © 2017-1-17 php20.cn 版权所有 ICP证:闽ICP备17001387号
  • 本网站由:热门标签 提供cdn加速/云存储服务
  • 联系邮箱:1067197739@qq.com


转自仙士可博客www.php20.cn

数据库

mysql删除重复记录只保留一条

2022-3-2 11:21:04

数据库

elasticsearch 入门原理解析

2022-3-2 12:14:03

搜索