前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于双主的一些说明【91洲际哥的笔记】

关于双主的一些说明【91洲际哥的笔记】

作者头像
保持热爱奔赴山海
发布2019-09-17 14:25:36
6430
发布2019-09-17 14:25:36
举报
文章被收录于专栏:数据库相关

首先声明一下,双主这种架构个人不怎么喜欢,所以这里只做简单说明与吐槽

Ⅰ、双主架构介绍

M/S(A) <====> S/M(B)

为什么要这么做呢?有什么意义呢?

我也不知道

Ⅱ、双主搭建

代码语言:javascript
复制
主上操作change masterstart slave机器A
auto_increment_increment  自增值设置为2机器B
auto_increment_increment  自增值设置为2auto_increment_offset     起始值也设置为2tips:session级别的参数,不能用set globalA1 3 5 7B2 4 6 8

这样就可以双写了,带有自增的insert没问题

但极力不推荐

Ⅲ、双写存在的问题

3.1 不好的第一点

一张表上如果有唯一索引,即使是自增,也会完蛋

A上同步到B,B上写,就会报duplicate,这还比较好,至少两边数据还是一致的

万一A还没同步到B,B上插入也成功了,两边都成功了复制是失败的,这咋办?两边数据都不一致了,对不起来

3.2 不好的第二点

解决不了update问题

同一条记录在两个节点上更新,前面一个更新的节点数据被覆盖,就更新丢失了

3.3 相关说明

双写存在很多问题

  • 以前做双主,主从复制关系之前都建立好了,以后做选主的时候就不用建立复制关系了,以前建立复制关系是很烦的一件事情
  • mha不需要做双主,mmm才是做双主,5.6开始,只要开启gtid,选主是很容易的
  • 如果不是5.6,但是用了mha,mha会自动重建复制关系

综上:所以双主用来做选主的架构其实也不多了,很落后,双主做双写很危险

应用层控制双写,如果能解决上面说的问题就可以用,但是很难

如果做到的话,对写入的带宽有很大提升

tips:

①A同步到B,为什么B不会再推到A,这样无限循环?

因为同步的记录是带有server-id的,检测到要发送的server-id就是接收过来的server-id就不会发了

②oracle的rac为什么可以双写?

  • 支持共享存储架构,多个进程共享一个存储
  • MySQL的M和S存储是自己管自己
  • oracle这么用(rac的共享存储)就是单点

Ⅳ、双主的一个比较好的方案

拒绝交叉写入

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/07/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Ⅰ、双主架构介绍
  • Ⅱ、双主搭建
  • Ⅲ、双写存在的问题
    • 3.1 不好的第一点
      • 3.2 不好的第二点
        • 3.3 相关说明
        • Ⅳ、双主的一个比较好的方案
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档