我的编程空间,编程开发者的网络收藏夹
学习永远不晚

binlog日志的三种模式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

binlog日志的三种模式

statement level模式

       每一条会修改数据的sql都会记录到master的bin-log中。Slave在复制的时候sql进程会解析成和原来master端执行过的相同的sql来再次执行。

       优点:statement level下的优点首先就是解决了row level下的缺点,不需要记录每一行数据的变化,减少bin-log日志量,节约IO,提高性能。因为他只需要记录在master上所执行的语句的细节,以及执行语句时候的上下文的信息。

       缺点:由于他是记录的执行语句,所以,为了让这些语句在slave端能正确执行,那么他还必须记录每条语句在执行的时候的一些相关信息,也就是上下文信息,以保证所有语句在slave端杯执行的时候能够得到和在master端执行时候相同的结果。另外就是,由于mysql现在发展比较快,很多的新功能不断的加入,使mysql的复制遇到了不小的挑战,自然复制的时候涉及到越复杂的内容,bug也就是越容易出现。在statement level下,目前已经发现的就有不少情况会造成mysql的复制出现问题,主要是修改数据的时候使用了某些特定的函数或者功能的时候会出现,比如:sleep()函数在有些版本中就不能正确复制,在存储过程中使用了last_insert_id()函数,可能会使slave和master上得到不一致的id等等。由于row level

是基于每一行来记录的变化,所以不会出现类似的问题

 

 row level模式

       日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改。

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

       缺点:row level下,所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如有这样一条update语句:updateproduct set

Owner_member_id=’b’  where owner_member_id=’a’,执行之后,日志中记录的不是这条update语句所对应额事件(mysql 以事件的形式来记录bin-log日志),而是这条语句所更新的每一条记录的变化情况,这样就记录成很多条记录被更新的很多个事件。自然,bin-log日志的量就会很大。尤其当执行after table之类的语句的时候,产生的日志量是惊人的,因为MYSQL对于alter table之类的表结构变更语句的处理方式是整个表的每一条记录都需变动,实际上就是重建了整个表。那么该表的每一条记录都会被记录到日志中。

 

 mixed模式

       实际上就是前两种模式的结合。在mixed模式下,mysql会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在statement和row之间选择一种。新版本中的statement level还是跟以前一样,仅仅记录执行的语句。而新版本的mysql中队row level模式也被做了优化,并不是所有的修改都会以row level来记录,像遇到表结构变更的时候就会以statement模式来记录,如果sql语句确实就是update或者delete等修改数据的语句,×××还是会记录所有行的变更。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

binlog日志的三种模式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL三大日志——binlog、redoLog、undoLog详解

目录跳转电梯 1. redoLog1.1 为什么需要redo log1.2 redo log基本概念1.3 redo log记录形式 2. binlog2.1 binlog基本概念2.2 binlog使用场景2.3 binlog
2023-08-19

MySQL 的日志:binlog

前言:binlog 用于记录数据库执行写入性操作的日志信息,以二进制的形式保留在磁盘中。它是由 Server 层进行记录的,使用任何存储引擎都会产生 binlog。实验准备我们通过 Docker 来对 MySQL binlog 进行一系列的研究。需要进行一些准
MySQL 的日志:binlog
2019-08-01

MySQL四种日志binlog/redolog/relaylog/undolog详解

目录一、binlog二、redo log三、binlog与redolog的区别四、relay-log五、undo log一、binlogbinlog记录数据库表结构和表数据变更,比如update/delete/insert/truncat
MySQL四种日志binlog/redolog/relaylog/undolog详解
2024-08-09

云服务器的三种模式是哪三种模式

云服务器的三种模式包括:按需使用(DistributedAccess)、按量付费(DecentralizedPricing)和自助托管(AutonomousServer)。按需使用(DistributedAccess)是指用户可以根据自身需求随时购买云服务器,不需要在云服务器供应商处注册或租用云服务器。这种方式适用于小型企业,它可以帮助他们避免高昂的固定成本和其他不必要的开支。按量付费(De
2023-10-26

云服务器的三种模式是哪三种模式呢

云服务器(CloudServer)有以下三种模式:公共云(PublicCloud):这种云服务器是由企业或组织自己管理并托管其计算和存储资源,客户可以根据需求选择适合自己的服务器类型和配置,并与其他客户共享这些资源。私有云(PrivateCloud):这种云服务器是由企业或组织自己管理并维护其私有数据和计算资源,客户可以根据自己的需求选择适合自己的服务器类型和配置,并与其他客户共享这些资源。混合云(HybridCloud):这种云服务器允许客户根据自...
2023-10-27

云服务器的三种模式是哪三种

云服务器的三种模式包括:按需使用(DistributedAccess)、按需分配(DistributedPriority)、按需存储(DistributedStorage)。下面分别介绍这三种模式:按需使用模式:这种模式是指云服务供应商在客户购买其云服务器后,按照客户的配置要求进行自动扩展或缩减,让客户可以根据需求随时获得所需的云服务器资源。这种模式通常适用于那些对云服务器的使用量很小或没有必
2023-10-26

MySQL的binlog日志使用详解

binlog 就是binary log,二进制日志文件,这个文件记录了MySQL所有的DML操作。通过binlog日志我们可以做数据恢复,增量备份,主主复制和主从复制等等。对于开发者可能对binlog并不怎么关注,但是对于运维或者架构人员来
2022-05-25

编程热搜

目录