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)

相关推荐

  • 如何理解Java EE工作流管理系统jBPM的FORK中节点同步功能

    技术如何理解Java EE工作流管理系统jBPM的FORK中节点同步功能本篇文章给大家分享的是有关如何理解Java EE工作流管理系统jBPM的FORK中节点同步功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完

    攻略 2021年11月21日
  • 如何全面解析Perl命令行应用

    技术如何全面解析Perl命令行应用本篇文章给大家分享的是有关如何全面解析Perl命令行应用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。和大家重点讨论一下P

    攻略 2021年11月12日
  • HTTP请求流程详解

    技术HTTP请求流程详解 HTTP请求流程详解HTTP协议是建立在TCP连接基础之上的,它是一种允许浏览器向服务器发送请求获取资源的协议,是Web的基础。通常都是由浏览器发起请求,来获取服务端的资源如H

    礼包 2021年12月3日
  • 怎样可以,和平精英怎么才能变厉害

    技术怎样可以,和平精英怎么才能变厉害大家好怎样可以!这里是爱分享的零助攻!很高兴回答您的问题!和平精英怎么样变厉害?可以说需要具备的条件太多了。第一:能力问题能力又分先天和后天,有的人天生就是玩游戏的好手,接受能力和适应

    生活 2021年10月21日
  • 交朋友英语,关于如何交朋友的英语作文

    技术交朋友英语,关于如何交朋友的英语作文Everyone needs friends. A friend can give us help and share our difficulties and happines

    生活 2021年10月21日
  • Oracle11g新增视图查询表空间使用率分析

    技术Oracle11g新增视图查询表空间使用率分析本篇内容主要讲解“Oracle11g新增视图查询表空间使用率分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle1

    攻略 2021年11月9日