请选择 进入手机版 | 继续访问电脑版

马悦凌健康养生网-马悦凌粉丝乐园-马悦凌博客专注-爱久养身园专注各种中医养生知识

搜索
热门搜索: 健康 瑜伽 养生
 找回密码
 立即注册
热图推荐
  • 忽悠人的8种病,实在根本不消治!别再花冤
  • 美容变毁容?广西一大学老师去整形医院“打
查看: 817|回复: 0

李开复自传读后感 详解mysql数据库binlog三种模式的区别(row,statement,mixed) 玻璃花漫画 丁香动漫

[复制链接]

611

主题

302

帖子

912

积分

高级会员

Rank: 4

积分
912
发表于 2019-5-15 22:15 | 显示全部楼层 |阅读模式
<h1>概述

Mysql binlog日志有三种格式,别离为Statement,MiXED,以及ROW!
这三种格式之间有什么区分呢?下面先先容下各自的优弱点。
<h1>ROW

日志中会记录成每一行数据被点窜的形式,然后在slave端再对不异的数据停止点窜,只记录要点窜的数据,只要value,不会有sql多表关联的情况。
优点:在row形式下,bin-log中可以不记录履行的sql语句的高低文相关的信息,仅仅只需要记录那一笔记录被点窜了,点窜成什么样了,所以row的日志内容会很是清楚的记录下每一行数据点窜的细节,很是轻易了解。而且不会出现某些特定情况下的存储进程和function,以及trigger的挪用和动身没法被正确复制题目。
弱点:在row形式下,一切的履行的语句当记录到日志中的时辰,都将以每行记录的点窜来记录,这样能够会发生大量的日志内容。

详解mysql数据库binlog三种形式的区分(row,statement,mixed)

详解mysql数据库binlog三种模式的区别(row,statement,mixed)  减肥 221531o7e5hnebqpacbahl



DXCPICKPRE_0</pre>

详解mysql数据库binlog三种形式的区分(row,statement,mixed)

详解mysql数据库binlog三种模式的区别(row,statement,mixed)  减肥 221531s0ap67536kdz5n6b


详解mysql数据库binlog三种形式的区分(row,statement,mixed)

详解mysql数据库binlog三种模式的区别(row,statement,mixed)  减肥 221532csmjzksnyjnnesed


因而可知,row形式是针对每一行的数据,而于关联表无关,它把关联中的响应数据记录在log中。这样一来会发生大量的数据。
<h1>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)会出现题目).

详解mysql数据库binlog三种形式的区分(row,statement,mixed)

详解mysql数据库binlog三种模式的区别(row,statement,mixed)  减肥 221532z0fsv3xxjjdskdfx



DXCPICKPRE_1</pre>

详解mysql数据库binlog三种形式的区分(row,statement,mixed)

详解mysql数据库binlog三种模式的区别(row,statement,mixed)  减肥 221532xjxxvdaczu5gkjzg


利用以下函数的语句也没法被复制:

DXCPICKPRE_2</pre><h1>Mixedlevel

是以上两种level的夹杂利用,一般的语句点窜利用statment格式保存binlog,如一些函数,statement没法完成主从复制的操纵,则采用row格式保存binlog,MySQL会按照履行的每一条具体的sql语句来区分看待记录的日志形式,也就是在Statement和Row之间挑选一种.新版本的MySQL中队row level形式也被做了优化,并不是一切的点窜城市以row level来记录,像碰到表结构变更的时辰就会以statement形式来记录。至于update大概delete等点窜数据的语句,还是会记录一切行的变更。
<h1>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每个日志文件巨细
2.Binlog日志格式挑选
Mysql默许是利用Statement日志格式,保举利用MIXED.
由于一些特别利用,可以斟酌利用ROWED,如自己经过binlog日志来同步数据的点窜,这样会节省很多相关操纵。对于binlog数据处置会变得很是轻松,相对mixed,剖析也会很轻松(固然条件是增加的日志量所带来的IO开销在容忍的范围内即可)。
3.mysqlbinlog格式挑选
mysql对于日志格式的选定原则:假如是采用 INSERT,UPDATE,DELETE 等间接操纵表的情况,则日志格式按照 binlog_format 的设定而记录,假如是采用 GRANT,REVOKE,SET PASSWORD 等治理语句来做的话,那末不管若何 都采用 SBR 形式记录
<h1>PS

在slave日志同步进程中,对于利用now这样的时候函数,MIXED日志格式,会在日志中发生对应的unix_timestamp()*1000的时候字符串,slave在完成同步时,取用的是sqlEvent发生的时候来保证数据的正确性。别的对于一些功用性函数slave能完成响应的数据同步,而对于上面指定的一些类似于UDF函数,致使Slave没法知晓的情况,则会采用ROW格式存储这些Binlog,以保证发生的Binlog可以供Slave完成数据同步。
前面会分享更多的devops和DBA方面的内容,感爱好的朋友可以关注一下~

详解mysql数据库binlog三种形式的区分(row,statement,mixed)

详解mysql数据库binlog三种模式的区别(row,statement,mixed)  减肥 221532ubbc0966joz95j23

感谢您的阅读
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

    联系我们
  • 咨询电话:0000 - 12345678 9999888877
  • 邮箱:123456789@qq . com
  • 地址:北京市海定区通州路群芳园二园1号楼9号
    移动客户端:
    关注我们:
  • 微信公众号:
  • 123cwyy
  • 扫描二维码加关注

快速回复 返回顶部 返回列表