前言:网上总结的个人感觉要不太细,要不太粗,自己总结一下

原贴:http://blog.csdn.net/everlasting_188/article/details/51438483

传统的2pc提交同步过程2PC 事务结束时,所有节点数据达到一致

协调者与参与者之间通信,参与者之间无连接

受网络状态影响较大

两次通信,需要得到每个参与者的反馈后才能决定是否提交事务

mysql的主从复制

主从复制的延时不好控制。

mysql多主复制

每个库上的主键ID生成要不冲突,这样主主复制才不会冲突,一般都通过应用层来控制,对开发人员来说不透明,一般采用按照节点取模来生成。

Galera replication原理

原理

1、从客户端看整体的流程

其中对应的角色分为2个:协调者和参与者

2、从存储引擎看,Galera相当于嵌入到提交事务中的一个plug模块

协调者:

1、 接收客户端请求

2、 广播请求到其他参与者(包括自己)

3、 作为参与者进行数据更新

4、更新失败或者成功返回给客户端

参与者

1、接收协调者的广播请求,然后进行数据库的更新

时序图

关键技术

1、全局唯一ID生成,保证ID的唯一和递增

2、协调者自己也是通过广播接收后进行的数据库业务操作,各个节点平等,保证了并发

3、事务传输要么成功传给了所有节点,要么都失败

4、事务在所有节点中的顺序一致

5、每个节点知道所有节点的状态(通过广播实现)

优点

1. 同步复制,主备无延迟

2. 支持多主同时读写,保证数据一致性

3. 集群中各节点保存全量数据

4. 节点添加/删除,自动检测和配置

5. 行级别并行复制

6. 不需要写binlog

缺点

1、每个节点独立、异步执行会导致节点不一致性(每个节点其实是维护一个队列),为了保证各个节点的最终一致性,必须使用类tcp的滑动窗口来进行限制,实现原理如下:

整个galera cluster中,同时只有一个节点可以广播消息(数据),每个节点都会获得广播消息的机会(获得机会后也可以不广播),当慢节点的待执行队列超过一定长度后,它会广播一个FC_PAUSE消息,所以节点收到消息后都会暂缓广播消息,直到该慢节点的待执行队列长度减小到一定长度后,galera cluster数据同步又开始恢复

2、问题1导致的下一个问题是,节点中的最大的tps值取决于速度最慢的那个节点,所以各个节点的能力平衡很重要

3、由于galera同步复制在每个写事务提交时都增加了replicate trx和certification test的开销,因此性能远远低于异步MySQL实例(异步mysql可以使用各种手段来提高提交tps)

总结

Galera replication for MySQL是一个高可用的方案,在牺牲性能的情况下,适合于关键业务。实际上关于在提交和交互的过程中,异常部分处理还是需要深入研究的,需要参考对应论文来说明(待续)

mysql多主集群_MYSQL-galera多主集群相关推荐

  1. mysql多主集群_mysql galera多主集群

    1.特性 基于行复制的完全并行同步复制 实时多主架构,任意节点可读写 无延迟复制,事务零丢失,可靠健壮的读写体验. 自动化节点关系控制:节点故障自动摘除,节点加入自动协调 接近原生的MySQL数据库连 ...

  2. mysql 7.x 集群_MySQL cluster 7.X集群部署配置

    2. 部署配置方法 本文介绍使用2台服务器(100与101)部署最简单的集群方法:其中100上部署 (2.1-2.3为所有节点均需执行的步骤,2.4和2.5为相关节点需执行的步骤) 2.1下载MySQ ...

  3. mysql修改主键属性_mysql如何改变主键属性

    mysql改变主键属性的方法:1.使用关键字modify,代码为[alter table tbl_name modify.....]:2.使用关键字change,代码为[alter table tbl ...

  4. mysql主键索引_MySQL索引之主键索引

    在MySQL里,主键索引和辅助索引分别是什么意思,有什么区别? 上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助索引的区别. 1.主键索引 主键索引,简称主键,原文是PR ...

  5. mysql实现自增字符串_Mysql实现字符串主键自增示例教程-Go语言中文社区

    /* Mysql数据库练习 需求:创建一张表,包含四个字段(pid,name,age,sex),然后使用存储过程实现添加数据,要求 1 pid 为自增主键 2 插入数据的时候值添加姓名和年龄 3 性别 ...

  6. mysql表主键类型_mysql表结构主键类型

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  7. mysql 集群_MySQL之PXC集群搭建

    一.PXC 介绍 1.1 PXC 简介 PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实 ...

  8. mysql percona 集群_MySQL高可用性解决方案—Percona XtraDB Cluster

    MySQL数据库的性能是服务器运维中不可缺少的部分,需要不断的优化数据库的性能,寻找出系统的瓶颈.今天就来分享一款提高数据库高可用性的解决方案.Percona XtraDB Cluster---MyS ...

  9. MySQL无中心化集群_MySQL Plus 如何做到无中心化、数据强一致性、秒级切换?

    数据库服务于企业的核心交易业务和实时交互应用,承载着企业的核心数据,因此企业对于数据库的数据一致性和高可用性有强烈的需求. 本次内容为青云QingCloud 数据库工程师蒙哲在 3306Pai 201 ...

  10. mysql如何管理innodb元数据_MySQL 8 InnoDB 集群管理

    使用 dba.checkInstanceConfiguration() 在添加实例到集群中前,使用该方法检查实例配置是否满足InnoDB 集群要求. 使用 dba.configureLocalInst ...

最新文章

  1. LoadRunner中log的使用总结
  2. html js 做的小游戏,用js做一个小游戏平台 (一)
  3. StartService返回2的解决方法
  4. 牛客网(剑指offer) 第九题 变态跳台阶
  5. linux进程的管理,显示及杀死
  6. js无限加载分页原理实现
  7. 谷粒商城:02. 数据库初始化以及SQL语句
  8. 如何查看微信页面的源代码
  9. matlab 画图函数plot
  10. C++中的iostream和iostream.h
  11. [总结]国家电网计算机类备考总结
  12. ES的同义词、扩展词、停止词热更新方案
  13. java基于微信小程序的在线学习考试测试系统小程序 uniapp
  14. html修改导航栏字体大小,CSS 制作网页导航条(下)
  15. 1247:河中跳房子
  16. valgrind内存泄露和线程竞态检测
  17. html5在线裁剪,HTML5 本地裁剪图片并上传至服务器(老梗)
  18. 水文---服务端学习路线(听别人说的,记录以激励自己)
  19. 使用python实现局域网文件共享(速度超快)
  20. 论文翻译1-PARSEC-Streaming 360-Degree Videos Using Super-Resolution

热门文章

  1. python 解决无法更新pip问题
  2. Keil5软件安装教程
  3. 安卓电视盒子上 安装 Ubuntu 20.04 并安装 certbot 获取证书
  4. 齿轮转速比和啮合频率
  5. [AHK]获取通达信软件上的股票代码
  6. 照片放大不清晰怎么处理?用嗨格式图片无损放大器
  7. RTU设备功能及选型
  8. Linux brctl 详解
  9. linux brctl
  10. C++11 字符串编码转换