爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      mysql binlog详解

      首页 知识中心 数据库 文章详情页

      mysql binlog详解

      2023-04-25 10:22:50 阅读次数:141

      binlog,mysql

      1.什么是binlog

      binlog日志用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改。

      2.binlog格式

      Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW!
      1.Statement:每一条会修改数据的sql都会记录在binlog中。

      优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。(相比row能节约多少性能与日志量,这个取决于应用的SQL情况,正常同一条记录修改或者插入row格式所产生的日志量还小于Statement产生的日志量,但是考虑到如果带条件的update操作,以及整表删除,alter表等操作,ROW格式会产生大量日志,因此在考虑是否使用ROW格式日志时应该跟据应用的实际情况,其所产生的日志量会增加多少,以及带来的IO性能问题。)

      缺点:由于记录的只是执行语句,为了这些语句能在slave上正确运行,因此还必须记录每条语句在执行的时候的一些相关信息,以保证所有语句能在slave得到和在master端执行时候相同 的结果。另外mysql 的复制,像一些特定函数功能,slave可与master上要保持一致会有很多相关问题(如sleep()函数, last_insert_id(),以及user-defined functions(udf)会出现问题).

      使用以下函数的语句也无法被复制:

      • LOAD_FILE()

      • UUID()

      • USER()

      • FOUND_ROWS()

      • SYSDATE() (除非启动时启用了 --sysdate-is-now 选项)

      同时在INSERT …SELECT 会产生比 RBR 更多的行级锁

      2.Row:不记录sql语句上下文相关信息,仅保存哪条记录被修改。

      优点: binlog中可以不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了。所以rowlevel的日志内容会非常清楚的记录下每一行数据修改的细节。而且不会出现某些特定情况下的存储过程,或function,以及trigger的调用和触发无法被正确复制的问题

      缺点:所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如一条update语句,修改多条记录,则binlog中每一条修改都会有记录,这样造成binlog日志量会很大,特别是当执行alter table之类的语句的时候,由于表结构修改,每条记录都发生改变,那么该表每一条记录都会记录到日志中。

      3.Mixedlevel: 是以上两种level的混合使用,一般的语句修改使用statment格式保存binlog,如一些函数,statement无法完成主从复制的操作,则采用row格式保存binlog,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种.新版本的MySQL中队row level模式也被做了优化,并不是所有的修改都会以row level来记录,像遇到表结构变更的时候就会以statement模式来记录。至于update或者delete等修改数据的语句,还是会记录所有行的变更。

      3.binlog作用

      因为有了数据更新的binlog,所以可以用于实时备份,与master/slave复制

      4.binlog基本配制与格式设定

      1.基本配制

      Mysql BInlog日志格式可以通过mysql的my.cnf文件的属性binlog_format指定。如以下:

      binlog_format = MIXED                 //binlog日志格式
      log_bin  =目录/mysql-bin.log    //binlog日志名
      expire_logs_days = 7                //binlog过期清理时间
      max_binlog_size=100m                    //binlog每个日志文件大小
      binlog-do-db=需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
      binlog-ignore-db=不需要备份的数据库苦命,如果备份多个数据库,重复设置这个选项即可
      

      2.Binlog日志格式选择

      Mysql默认是使用Statement日志格式,推荐使用MIXED.

      由于一些特殊使用,可以考虑使用ROWED,如自己通过binlog日志来同步数据的修改,这样会节省很多相关操作。对于binlog数据处理会变得非常轻松,相对mixed,解析也会很轻松(当然前提是增加的日志量所带来的IO开销在容忍的范围内即可)。

      3.mysqlbinlog格式选择

      mysql对于日志格式的选定原则:如果是采用 INSERT,UPDATE,DELETE 等直接操作表的情况,则日志格式根据 binlog_format 的设定而记录,如果是采用 GRANT,REVOKE,SET PASSWORD 等管理语句来做的话,那么无论如何 都采用 SBR 模式记录

      5.binlog参数

      log_bin   设置此参数表示启用binlog功能,并指定路径名称
      log_bin_index   设置此参数是指定二进制索引文件的路径与名称
      binlog_do_db  此参数表示只记录指定数据库的二进制日志
      binlog_ignore_db    此参数表示不记录指定的数据库的二进制日志
      max_binlog_cache_size    此参数表示binlog使用的内存最大的尺寸
      binlog_cache_size   此参数表示binlog使用的内存大小,可以通过状态变量binlog_cache_use和binlog_cache_disk_use来帮助测试。
      binlog_cache_use   使用二进制日志缓存的事务数量
      binlog_cache_disk_use   使用二进制日志缓存但超过binlog_cache_size值并使用临时文件来保存事务中的语句的事务数量
      max_binlog_size    Binlog最大值,最大和默认值是1GB,该设置并不能严格控制Binlog的大小,尤其是Binlog比较靠近最大值而又遇到一个比较大事务时,为了保证事务的完整性,不可能做切换日志的动作,只能将该事务的所有SQL都记录进当前日志,直到事务结束
      sync_binlog    这个参数直接影响mysql的性能和完整性
      sync_binlog=0:当事务提交后,Mysql仅仅是将binlog_cache中的数据写入Binlog文件,但不执行fsync之类的磁盘同步指令通知文件系统将缓存刷新到磁盘,而让Filesystem自行决定什么时候来做同步,这个是性能最好的。
      sync_binlog=n:在进行n次事务提交以后,Mysql将执行一次fsync之类的磁盘同步指令,同志文件系统将Binlog文件缓存刷新到磁盘。
      Mysql中默认的设置是sync_binlog=0,即不作任何强制性的磁盘刷新指令,这时性能是最好的,但风险也是最大的。一旦系统绷Crash,在文件系统缓存中的所有Binlog信息都会丢失
      

      6.binlog的删除

      binlog的删除可以手工删除或自动删除

      自动删除binlog

      通过binlog参数(expire_logs_days )来实现mysql自动删除binlog
      expire_logs_days:控制binlog日志文件保留时间,超过保留时间的binlog日志会被自动删除

      mysql> show binary logs;
      mysql> show variables like 'expire_logs_days';
      mysql> set global expire_logs_days=3;
      

      手工删除binlog

      mysql> reset master;   //删除master的binlog
      mysql> reset slave;    //删除slave的中继日志
      mysql> purge master logs before '2012-03-30 17:20:00';  //删除指定日期以前的日志索引中binlog日志文件
      mysql> purge master logs to 'binlog.000002';   //删除指定日志文件的日志索引中binlog日志文件
      

      或者直接用操作系统命令直接删除

      mysql> set sql_log_bin=1/0; //如果用户有super权限,可以启用或禁用当前会话的binlog记录
      mysql> show master logs; //查看master的binlog日志
      mysql> show binary logs; //查看master的binlog日志
      mysql> show master status; //用于提供master二进制日志文件的状态信息
      mysql> show slave hosts; //显示当前注册的slave的列表。不以--report-host=slave_name选项为开头的slave不会显示在本列表中
      

      7.binglog的查看

      通过mysqlbinlog命令可以查看binlog的内容

      [root@localhost ~]# mysqlbinlog  /home/mysql/binlog/binlog.000003  | more
      

      解析binlog格式

      1.开始事物的时间:
      SET TIMESTAMP=1350355892/*!*/;
      BEGIN
      2.sqlevent起点
      #at 1643330 :为事件的起点,是以1643330字节开始。
      3.sqlevent 发生的时间点
      #121016 10:51:32:是事件发生的时间,
      4.serverId
      server id 1 :为master 的serverId
      5.sqlevent终点及花费时间,错误码
      end_log_pos 1643885:为事件的终点,是以1643885 字节结束。
      execTime 0: 花费的时间
      error_code=0:错误码
      Xid:事件指示提交的XA事务
      

      binlog开启成功之后,binlog文件的位置可以在my.inf配置文件中查看。也可以在mysql的命令行中查看。命令行查看代码如下

      show variables like '%log_bin%';
      

      我们也可以看一下当前mysql的binlog的情况

      show master status;
      

      每当我们重启一次,会自动生成一个binlog文件,我们重启完毕之后再来执行同样的命令
      存放binlog的目录下也多个了这么一个文件。
      当然,我们也可以手动的来刷新binlog文件,通过 flush logs,同样会新创建一个binlog文件
      如果我们想把这些文件全部清空,可以使用reset master 来处理

      下面我们来简单总结一下关于binlog:
      1.binlog文件会随服务的启动创建一个新文件
      2.通过flush logs 可以手动刷新日志,生成一个新的binlog文件
      3.通过show master status 可以查看binlog的状态
      4.通过reset master 可以清空binlog日志文件
      5.通过mysqlbinlog 工具可以查看binlog日志的内容
      6.通过执行dml,mysql会自动记录binlog

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://ghostwritten.blog.csdn.net/article/details/104742866,作者:ghostwritten,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:数据结构算法 简单的面试思考题

      下一篇:MySQL的delete和drop以及不常见的truncate的异同分析

      相关文章

      2025-05-13 09:49:27

      mysql一些小知识点

      mysql 使用的是三值逻辑:TRUE FALSE UNKNOWN。

      2025-05-13 09:49:27
      left , mod , mysql , null , select , user
      2025-05-08 09:04:49

      MySQL-备份+日志:介质故障与数据库恢复

      MySQL-备份+日志:介质故障与数据库恢复

      2025-05-08 09:04:49
      mysql , MySQL , 备份 , 恢复 , 数据库 , 文件 , 日志
      2025-05-08 09:03:29

      windows下mybatis插入mysql数据中文乱码问题解决

      windows下mybatis插入mysql数据中文乱码问题解决

      2025-05-08 09:03:29
      amp , ini , jdbc , mysql , 乱码
      2025-05-07 09:09:52

      基础—SQL—DCL(数据控制语言)之用户管理

      基础—SQL—DCL(数据控制语言)之用户管理

      2025-05-07 09:09:52
      mysql , 创建 , 数据库 , 权限 , 用户 , 访问
      2025-05-07 09:09:52

      基础—SQL—DCL(数据控制语言)小结

      基础—SQL—DCL(数据控制语言)小结

      2025-05-07 09:09:52
      mysql , SQL , 数据库 , 权限 , 用户 , 管理 , 语句
      2025-05-07 09:08:08

      基于servlet+jsp+mysql实现的java web校园车辆管理系统

      本项目是一套基于servlet+jsp+mysql实现的java web校园车辆管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。

      2025-05-07 09:08:08
      mysql , 信息 , 信息管理 , 添加 , 源码
      2025-05-07 09:07:56

      基于JavaFX和mysql实现的驾考习题管理系统

      本项目是一套基于JavaFX和mysql实现的驾考习题管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。

      2025-05-07 09:07:56
      mysql , 数据库 , 项目
      2025-04-11 07:15:54

      java使用JDBC方式操作mysql数据库示例

      java使用JDBC方式操作mysql数据库示例

      2025-04-11 07:15:54
      java , JDBC , mysql , 数据库 , 示例
      2025-04-09 09:17:07

      mysql Commands out of sync; you can‘t run this command now

      mysql Commands out of sync; you can‘t run this command now

      2025-04-09 09:17:07
      mysql , query , 执行
      2025-03-31 08:57:16

      PDO ping 的实例 ,解决mysql has gone的问题

      PDO ping 的实例 ,解决mysql has gone的问题

      2025-03-31 08:57:16
      mysql
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5244231

      查看更多

      最新文章

      mysql一些小知识点

      2025-05-13 09:49:27

      windows下mybatis插入mysql数据中文乱码问题解决

      2025-05-08 09:03:29

      java使用JDBC方式操作mysql数据库示例

      2025-04-11 07:15:54

      mysql Commands out of sync; you can‘t run this command now

      2025-04-09 09:17:07

      PDO ping 的实例 ,解决mysql has gone的问题

      2025-03-31 08:57:16

      navicat导入excel文件的步骤以及可能碰到的问题

      2025-03-26 09:08:50

      查看更多

      热门文章

      Windows下使用批处理实现启动关闭mysql

      2023-04-24 11:27:05

      cdh安装到scm-server的mysql报错处理

      2023-04-28 02:38:44

      Nacos数据持久化到MySQL

      2023-05-12 07:20:56

      python学习——使用MySQL

      2023-04-27 07:57:16

      MySQL的间隙锁

      2023-05-12 07:20:56

      正确理解Mysql的列索引和多列索引

      2023-05-12 07:20:42

      查看更多

      热门标签

      数据库 mysql 字符串 数据结构 MySQL 算法 redis oracle java sql python 数据 索引 SQL 查询
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      07-mysql基本查询,阶段二,条件查询

      MySQL问题解决集锦

      数据库加载驱动问题(java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver)

      数据同步结合Crontab

      mysql/stonedb子查询性能分析-FindOneInsidePack

      Node.js:Dotenv从`.env` 文件加载环境变量的库

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号