Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication

Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication

Overview

Galera Cluster

  • 由 Codership 开发 官网
  • 包含在MariaDB,在Percona、MySQL 都可以使用

Galera Cluster 是一个基于 InnoDB 多主的同步复制,可以读写任何节点,即使失去任何一个节点也不影响业务中断,而且无需复杂的 failover 操作。

Percona XtraDB Cluster

  • 由 Percona 开发,在 Galera 基础打 Patch [官网](https://www.percona.com/software/mysql- database/percona-xtradb-cluster)
  • 自 2012 年 4 月可用
  • 附加的特性
    • PFS 扩展支持
    • SST/XtraBackup 方式的改变
    • PXC Strict mode *
    • ProxySQL 集成 *
    • 提升性能 *

MySQL Group Replication

  • 由 Oracle 官方开发
  • 2016 年 12 月 MySQL 5.7.17 发布 GA
  • MySQL InnoDB Cluster 整体解决方案

MySQL Group Replication 是一个 MySQL Server Plugin,提供分布式状态机复制与 Server 强大协调,当在一个 Group Replication 时,Server 将自动协调,每个节点都可以自动处理更新,自动检测,有一个 membership service 维护一个 view,记录组内 记录可见成员在某个时间点一致性和高可用性的,当任何一个成加入或离开,view 就会相应的更新

MySQL InnoDB Cluster

-w610

Similarities

  • MySQL/MariaDB
  • 复制方法
  • 所有节点都有全部的数据 - 读仅发生在当前本地节点
  • 都需要 InnoDB/XtraDB 引擎
  • 都支持 多主的拓扑 (Active-active multi-master Topology)
    • 写多主节点
    • 不需要复杂的 Failover 操作
  • 节点管理,加入和离开都是完全自动处理的
  • 执行和写都是按全局的顺序进行的
  • 数据一致性
  • 乐观锁 / 最早提交的先赢
  • Quorum - 防止脑裂

Similar - Use Cases

  • 严格的持久化环境
  • 同时定入多个节点,保证数据一致性
  • 减少故障转移时间 (Reduce failover time)

Similar Limitation

  • 大事务或长事务
    • 很大的可能失败
    • 大事务导致在有效事务
  • 热点,多个节点更新同一行数据
  • 只有一个节点写,是最好的解决方案

Differences GR & Galera

  • Group Communication System 组通信系统
  • Binlogs & Gcache
  • Node Provisioning 节点配置
  • GTID vs Seqno
  • Partition Handling 分区控制
  • Full Solution or Plugin
  • Flow Control 流控制
  • WAN Support
  • OS Support
  • Schema Changes DDL

Group Communication System 组通信系统

  • Galera

    • 标志的单环顺序 Totem Single-ring Ordering
    • 所有节点都必须有 ACK 消息
  • MySQL Group Replication

    • 基于 Paxos
    • Paxos 只要求大多数 ACK 消息

Binlogs & Gcache

  • Galera Cluster/PXC

    • uses binlog row events
    • but does not require binary logging
    • writes events to Gcache (con gurable size)
  • MySQL Group Replication

    • requires binary logging

Node Provisioning 节点配置

  • Galera Cluster/PXC

    • has State Snapshot Transfer (SST) 全量同步
      • Percona XtraBackup (Recommended)
      • rsync
      • mysqldump
    • incremental State Transfer (IST) using GCache 增量同步
  • MySQL Group Replication

    • 没有自动全量同步,除非保留所有 Binlog
    • 用于同步的异步复制通道

GTID vs. Seqno

  • Galera Cluster/PXC

    • has a seqno which is a incrementing number
  • MySQL Group Replication

    • 依赖 MySQL GTID
    • writes to a cluster create GTID events on the GR Cluster UUID

Partition Handling

  • Galera Cluster/PXC

    • A partitioned node will refuse reads/writes (con gurable)
    • A partitioned node will automatically recover and rejoin
  • MySQL Group Replication

    • A partitioned node will accept reads
    • A partitioned node will accept write requests, but will hang forever
    • A partitioned node needs to be manually rejoined to the cluster

Full Solution or Plugin

  • Plugin

    • Group Replication is a 'Replication Plugin'
    • several split brain bugs in current code ( fixes pending!)
  • Solution

    • Galera Cluster 不处理应用连接
    • 与 GR 相比有更强的防止脑裂
    • MySQL InnoDB Cluster (w. MySQLRouter)
  • Full Solution

    • Percona XtraDB Cluster (w. ProxySQL)
    • 集成 ProxySQL
    • 严格的 mode,防止使用限制

Flow Control 流控制

防止太慢的节点,被落下太远

  • Galera Cluster/PXC

    • 当一个节点慢到一个限制,阻止所有节点写
    • Flow Control 的消息已经发送
    • low defaults; Galera: 16(*), PXC: 100
    • Tell others to stop writes
  • MySQL Group Replication

    • 每个节点都有每个成员的统计信息
    • 每个独立的节点决定写的阈值
    • high default: 25000
    • 如果有节点太慢,其他节点放慢写速度

WAN Support

  • Galera Cluster/PXC

    • 投票权重
    • 调节网络通信设置
    • 减少分段网络流量
    • 仲裁人
  • MySQL Group Replication

    • 不建议在 WAN 上使用

OS Support

  • Galera

    • FreeBSD & Linux
  • Galera Cluster/PXC

    • Linux
  • MySQL Group Replication

    • Linux, Windows, Solaris, OSX, FreeBSD

Schema Changes - DDL

  • Galera Cluster/PXC

    • Total Order Isolation
    • All writes will be blocked during Writes on other nodes will be terminated
    • Workarounds 变通办法
      • pt-online-schema-change
      • wsrep_osu_method=RSU
        • 更多的操作工作
        • 并不是所有 DDL 可行
  • MySQL Group Replication

    • DDL 并不会阻塞写,像平常使用一样
    • 仅建议在单主模式下使用 (因为 DDL 并没有冲突检测)

Differences PXC & Galera

  • 扩展 PFS 支持
  • SST/XtraBackup 方式的改变
  • Bug-Fixes
  • PXC Strict Mode - PXC 严格的 Mode
  • ProxySQL 集成
  • 性能提升

PXC Strict Mode

预防实验性或不支持的特性

  • 仅支持 InnoDB 的操作
  • 预防修改 binlog_format!=ROW
  • 需要 Table 有主键
  • 禁用不支持的特性
    • GET_LOCK,LOCK TABLES,CTAS
    • FLUSH TABLES <tables> WITH READ LOCK
    • tx_isolation=SERIALIZABLE

ProxySQL 集成

ProxySQL 在 PXC 当负载均衡的角色

  • proxysql-admin 配置工具

  • ProxySQL schedulers

    • 健康检查
    • 重新配置节点
  • PXC 维护模式

    • tell load balancer to rebalance load

性能提升

  • 可伸缩性 fixs PXC 5.7.17

  • 新的默认值

    • gcs.fc_limit=100
    • evs.send_window=10
    • evs.user_send_window=4

[图片上传失败...(image-b39cb1-1513951864372)]

Limitations

  • Galera Cluster/PXC

    • InnoDB/XtraDB Only
    • tx_isolation=SERIALIZABLE
    • GET_LOCK()
    • LOCK TABLES
    • SELECT ... FOR UPDATE
    • Careful with ALTER TABLE ... IMPORT/EXPORT
    • Capped maximum transaction size 最大事务
    • XA transactions
  • Group Replication

    • InnoDB/XtraDB Only
    • tx_isolation=SERIALIZABLE
    • GET_LOCK()
    • LOCK TABLES
    • SELECT ... FOR UPDATE
    • CarefulwithALTER TABLE ... IMPORT/EXPORT.
    • Careful with large transactions
    • no support for tables with multi-level foreign key dependencies, can create inconsistencies

Known Issues

Galera Cluster/PXC Issues

  • Crashes due to background thread handling trx
    processing

    • mysql-wsrep#306: stored procedure aborts
    • mysql-wsrep#305: event scheduler
    • mysql-wsrep#304: local scope functions such as CURRENT_USER()
  • Various crashes related to DDL

    • mysql-wsrep#301:runningSHOW CREATE TABLE in multiple nodes with DDL can cause crash.
    • mysql-wsrep#275: Aborting trx leaves behind open tables in cache can cause crash
  • Concurrent DDLs using wsrep_OSU_method=RSU crash/inconsistency issues

    • mysql-wsrep#283 & mysql-wsrep#282
  • Shutdown issues

    • mysql-wsrep#303: cleanup during shutdown fails to clear the EXPLICT MDL locks (FTWRL)
    • mysql-wsrep#273: Not getting clean shutting down message if we start the server with unknown variable
    • mysql-wsrep#279: Trying to access stale binlog handler leads to crash

Group Replication Issues

分区容忍问题,不能防止脑裂

* #84727: partitioned nodes still accept writes: queries hang (~Fixed in 5.7.20)
* #84728: GR failure at start still starts MySQL (~Fixed in 8.0.2)
* #84729: block reads on partitioned nodes
* #84733: not possible to start with super_read_only=1 (Fixed in 8.0.2)
* #84784: Nodes Do Not Reconnect
* #84795: STOP GROUP_REPLICATION sets super_read_only=off

减少冲突

* #84731: mysql client connections get stuck during GR start

稳定性

* #84785: Prevent Large Transactions in Group Replication (~Fixed in 5.7.19)
* #84792: Member using 100% CPU in idle cluster (*)
* #84796: GR Member status is wrong

可用性

* #84674: unresolved hostnames block GR from starting (~Fixed in 5.7.18)
* #84794: cannot kill query that is stuck inside GR
* #84798: Group Replication can use some verbosity in the error log

Q & A

这个看原 PDF 吧。

Performance Tests

[图片上传失败...(image-9c78ce-1513951864372)]

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容