Mysql基础之你我他(二)——Binlog

Mysql基础之你我他(二)——BinlogBinlog 基础知识讲解 让你快速对 Binlog 有个清晰的认知

一、Binlog简介:

Binlog是二进制日志文件,用于记录mysql的数据更新或者潜在更新(比如DELETE语句执行删除而实际并没有符合条件的数据),在mysql主从复制中就是依靠的binlog。可以通过语句“show binlog events in ‘binlogfile’”来查看binlog的具体事件类型。binlog记录的所有操作实际上都有对应的事件类型的,MySQL binlog的三种工作模式:

(1)Row level(用到MySQL的特殊功能如存储过程、触发器、函数,又希望数据最大化一直则选择Row模式)   

① 日志中会记录每一行数据被修改的情况,然后在slave端对相同的数据进行修改。   优点:不记录执行的sql语句上下文相关的信息,仅仅只需要记录那一条被修改。所以Row模式 的日志内容会记录下每一行数据修改的细节。不会出现某些特定的情况下的存储过程或函数,以及触发器的调用和触发无法被正确复制的问题

缺点:Row模式 所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样会造成binlog日志量会很大

(2)Statement level(默认)

② 每一条被修改数据的sql都会记录到master的bin-log中,slave在复制的时候sql进程会解析成和原来master端执行过的相同的sql再次执行。在主从同步中一般是不建议用statement模式的,因为会有些语句不支持,比如语句中包含UUID函数,以及LOAD DATA IN FILE语句等   优点:不需要记录每一行数据的变化,减少bin-log日志量,节约IO,提高性能。因为它只需要在Master上所执行的语句细节,以及执行语句的上下文的信息。

缺点:由于只记录语句,所以,在statement level下 已经发现了有不少情况会造成MySQL的复制出现问题,主要是修改数据的时候使用了某些指定的函数或者功能的时候会出现。

(3)Mixed(混合模式)   

③ 结合了Row level和Statement level的优点,同时binlog结构也更复杂。

二、如何查看与配置binlog格式?

① 通过命令行查看binlog_foramat

Mysql基础之你我他(二)——Binlog

② 通过配置文件查看(/etc/my.cnf) 

三、如何修改binlog格式?

① 通过命令行:set session binlog_format=’MIXED’;

② 通过修改/etc/my.cnf

四、如何查看binlog是否开启?

① 通过命令行:show variables like ‘log_bin’;

Mysql基础之你我他(二)——Binlog

需要关闭的话,set sql_log_bin=0,如果开启的话set sql_log_bin=1。

五、如何获取当前binlog当前文件列表 ?

show binary logs;

Mysql基础之你我他(二)——Binlog

六、如何查看Binlog存放位置?

Mysql基础之你我他(二)——Binlog

 七、如何删除Binlog?

手动删除binlog,通过命令行。

Mysql基础之你我他(二)——Binlog

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228565.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午6:44
下一篇 2026年3月16日 下午6:44


相关推荐

  • n8n MCP工具完整指南:2025年Model Context Protocol最佳实践

    n8n MCP工具完整指南:2025年Model Context Protocol最佳实践

    2026年3月13日
    4
  • linux 查看cuda版本

    linux 查看cuda版本nvcc V

    2026年3月26日
    2
  • ubuntu 内核版本回退_ubuntu 内核版本

    ubuntu 内核版本回退_ubuntu 内核版本查看当前内核:uname-a查看系统上的所有内核:sudodpkg–get-selections|greplinux打开grub:sudovim/etc/default/grub修改:#GRUB_DEFAULT=0GRUB_DEFAULT=GRUB_DEFAULT=”AdvancedoptionsforUbuntu>Ubuntu,withLinux<回退的版本号>”例如:GRUB_DEFAULT

    2022年8月23日
    16
  • uboot中的mmc命令

    uboot中的mmc命令

    2021年11月29日
    43
  • Python安装:手动添加Python环境变量

    Python安装:手动添加Python环境变量问题描述 安装 Python 完成之后 在 cmd 命令提示符窗口 敲入 python 后 没有安装信息并出现报错信息如下 问题原因 因为 Windows 会根据一个 Path 的环境变量设定的路径去查找 python exe 如果没找到 就会报错 如果在安装时漏掉了勾选 AddPython3 7toPATH 那就要手动把 python exe 所在的路径添加到 Path 中 解决方法 1 先看一下 Pytho

    2026年3月19日
    4
  • qt中Qtcpserver服务端_qt websocket

    qt中Qtcpserver服务端_qt websocket0.前言本文主要讲解QtTCP相关接口的基本应用,一些实践相关的后面会单独写。TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。TCP通过三次握手来建立可靠的连接。TCP四次挥手断开连接。TCP连接是双向的,在四次挥手中,前两次挥手用于断开一个方向的连接,后两次挥手用于断开另一方向的连接。TCP知识参考:https://blog.csdn.net/sinat_36

    2025年10月17日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号