MYSQL在双MASTER环境中由ROW日志模式带来的数据是否一致

技术MYSQL在双MASTER环境中由ROW日志模式带来的数据是否一致MYSQL在双MASTER环境中由ROW日志模式带来的数据是否一致,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题

关系型数据库在双掌握环境中由排日志模式带来的数据是否一致,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

## 实验环境:双掌握结构

Master1==10.249.160.132

Master2==10.249.160.133

RHEL 5.4 X64,MYSQL 5.1.40

binlog_format=MIXED

tx_isolation=READ-COMMITTED

(这里有一个要点:READ-COMMITTED INNODB,MYSQL强制使用排日志模式)

[@more@]

## 初始化数据

使用测试;

设置名称gbk

如果存在h2,则删除表;

创建表h2 (id int,名称varchar(20),注释varchar(500),主键(id))

引擎=innodb默认字符集=gbk

插入氘值

(1,' h2 ',' h211 '),

(2,' h3 ',' h212 '),

(3,' h4 ',' h213 '),

(4,《H5》,《h214》),

(5,' h6 ',' h215 ');

刷新日志;

## 首先来认识一下,在排模式中,MYSQL是如何记录更新语句的。

比如:更新氘集名称='h-m@2 ',其中id=5;

BINLOG日志里这样记录的:

' BINLOG '

wx3rsxmcaaaaaaawahaaacyaaaaaaabahrlc3 qaamgxaamdwaa8dkadoawy=

wx3rsgcaaaaaaaapqaaak 0 gaaaqacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aDExNQ==

'/*!*/;

### UPDATE test.h2

###哪里

### @1=5 /* INT meta=0可空=0 is_null=0 */

# # # @ 2=' h6 '/* VARTRING(40)meta=40可空=1 is_null=0 */

# # # @ 3=' h215 '/* VARTRING(1000)meta=1000可空=1 is_null=0 */

### SET

### @1=5 /* INT meta=0可空=0 is_null=0 */

# # @ 2=' h-m @ 2 '/* VARTRING(40)meta=40可空=1 is_null=0 */

# # # @ 3=' h215 '/* VARTRING(1000)meta=1000可空=1 is_null=0 */

#### 我们发现关系型数据库只是记录了字段对应的号码。@1,而不记录具体是哪个字段。 (这正是俺担心的问题)

#### 下面我们用实验来验证一下问题。

####第一步,在Master1,意图是让MASTER2的结构化查询语言在Master1上延时应用。

停止奴隶;

####第二步,在Master2

更新氘集名称='h-m@2 ',其中id=5;

插入氘值(6,' h7@2 ',' dsflk ');

###尚未在Master1上应用

####第三步,在Master1

更改表h2在名字之后添加addr varchar(500);### 这里故障打断原的字段顺序

从氘中选择*;

- - - -

| id | name | addr | comment |

- - - -

| 1 | h2 | NULL | h211 |

| 2 | h3 | NULL | h212 |

| 3 | h4 | NULL | h213 |

| 4 | h5 | NULL | h214 |

| 5 | h6 | NULL | h215 |

- - - -

启动从机;###开始应用来自主控2的结构化查询语言日志

从氘中选择*;

- - - -

| id | name | addr | comment |

- - - -

| 1 | h2 | NULL | h211 |

| 2 | h3 | NULL | h212 |

| 3 | h4 | NULL | h213 |

| 4 | h5 | NULL | h214 |

| 5 | h-m @ 2 | h215 | h215 | # # addr=h215?

| 6 | H7 @ 2 | dsflk | NULL | # # addr=dsflk?

- - - -

####在这里。我们看到了什么?

####列地址,我们没有做任何事情臭虫.它有数据。

####记录6的列注释,应该是dsflk .不是"空"

####第四步,在Master2,有数据看起来没错;

从氘中选择*;

- - - -

| id | name | addr | comment |

- - - -

| 1 | h2 | NULL | h211 |

| 2 | h3 | NULL | h212 |

| 3 | h4 | NULL | h213 |

| 4 | h5 | NULL | h214 |

| 5 | h-m@2 | NULL | h215 |

| 6 | h7@2 | NULL | dsflk |

- - - -

####最后,

Master1和Master2中的数据不再相同。

当然,我们如果在作表结构变更时,把字段都加到最后,是没有这个问题的。

这应该当成是一个病菌处理。提交关系型数据库

还留了一个问题是:MYSQL的应用日志时,是通过什么来匹配行的?主键?还是日志里所列条件都必须匹配。

理论上的答案应该是:主键,(如果没有主键,就是关系型数据库帮你生成的内部主键。) 有兴趣的同学可以自己测试一把。

关于关系型数据库在双掌握环境中由排日志模式带来的数据是否一致问题的解答就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/106537.html

(0)

相关推荐

  • jquery sibling是什么

    技术jquery sibling是什么这篇文章主要讲解了“jquery sibling是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery sibling是什

    攻略 2021年11月15日
  • lte网络注册流程,3)

    技术lte网络注册流程,3) lte网络注册流程(3)
    lte网络注册流程(3)
    本文介绍下下lte网络注册的附着和建立默认承载的过程之中消息分析.
    1.attach request消息中主要包括:EP

    礼包 2021年11月25日
  • 霹雳的意思是什么,霹雳有什么诗号让人印象深刻

    技术霹雳的意思是什么,霹雳有什么诗号让人印象深刻一直以来《霹雳布袋戏》就深受大家的喜爱是因为它深入人心的角色,精彩的剧情。里面快意恩仇,肝胆相照,智冠群伦的智者,刀狂剑痴,心中唯有剑的柳生剑影,美丽的月神,视钱如命的杀手

    生活 2021年10月19日
  • Docker原理、架构与应用是什么

    技术Docker原理、架构与应用是什么本篇内容主要讲解“Docker原理、架构与应用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Docker原理、架构与应用是什么”吧

    攻略 2021年12月13日
  • 午饭用英语怎么说,该是吃午饭的时候了用英语怎么说

    技术午饭用英语怎么说,该是吃午饭的时候了用英语怎么说英语是:Its time for lunch.句子解释:time 英[taɪm] 美[taɪm] n. 时间; 次; 时代; 时刻; vt

    生活 2021年10月25日
  • 兰姆达,阿尔法贝塔伽马之后是什么

    技术兰姆达,阿尔法贝塔伽马之后是什么阿尔法贝塔伽马之后是德尔塔兰姆达。 阿尔法贝塔伽马之后所有顺序如下:(依次为 序号 大写 小写 英文注音 国际音标注音 中文注音) 1,Α α alpha a:lf 阿尔法
    2,Β

    生活 2021年10月20日