有些同学在使用Galera Cluster之后,会发现有一些坑,如:
1)大表DDL操作会导致整个集群不可用。在DDL操作完成前集群都不可写入任何事务,导致服务不可用。

解决方案:
直接使用pt-online-schema工具进行操作,可以避开这个问题。

2)由于Galera Cluster在执行DDL时,是Total Ordered Isolation(wsrep_OSU_method=TOI)的,所以必须要保证每个节点都是同时执行的,当然对于不是DDL的,也是Total Order的,因为每一个事务都具有同一个GTID值,DDL也不例外,而DDL涉及到的是表锁,MDL锁(Meta Data Lock),只要在执行过程中,遇到了MDL锁的冲突,所有情况下,都是DDL优先,将所有的使用到这个对象的事务,统统杀死,不管是读事务,还是写事务,被杀的事务都会报出死锁的异常,所以这也是一个Galera Cluster中,关于DDL的闻名遐迩的坑。

解决方案:
可以使用滚动升级方式在每个节点上分别执行DDL操作,这样就可以避开上面的问题。操作如下:

SET wsrep_OSU_method='RSU';

ALTER TABLE test ADD COLUMN user_age tinyint;

SET wsrep_OSU_method='TOI';

即先在节点上修改实例升级方式为滚动升级(Rolling Schema Upgrade),然后再执行DDL语句,最后再将实例升级方式修改回去。

转载于:https://blog.51cto.com/liucb/2410445

Galera Cluster大坑的解决方案相关推荐

  1. MYSQL使用MHA实现主从复制高可用、Galera Cluster介绍、压力测试、my.cnf配置参考

    MHA介绍 MHA: Master High Availability,对主节点进行监控,可实现自动故障转移至其它从节点:通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前M ...

  2. Galera Cluster For MySQL

    文章目录 简介 何谓Galera Cluster 为什么需要 Galera Cluster Galera Cluster 如何解决上述问题 注意点 有很多坑? 适用场景 集群搭建 搭建环境 安装依赖包 ...

  3. Galera Cluster for MySQL 详解(三)——管理监控

    目录 一.管理 1. 在线DDL (1)TOI (2)RSU (3)pt-online-schema-change 2. 恢复主组件 (1)了解主组件状态 (2)修改保存的主组件状态 3. 重置仲裁 ...

  4. 108.第十九章 MySQL数据库 -- MySQL高可用 Galera Cluster(十八)

    6.3.3 Galera Cluster 6.3.3.1 Galera Cluster介绍 Galera Cluster:集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的 ...

  5. Galera Cluster: 一种新型的高一致性MySQL集群架构

    2019独角兽企业重金招聘Python工程师标准>>> 1. 何谓Galera Cluster 何谓Galera Cluster?就是集成了Galera插件的MySQL集群,是一种新 ...

  6. galera mysql_MySQL高可用(Galera Cluster)

    Galera Cluster简介 Galera Cluster是集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分 ...

  7. 高一致性分布式galera cluster(多主)集群

    何谓Galera Cluster?就是集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtr ...

  8. Galera Cluster for MySQL 详解(一)——基本原理

    目录 一.同步复制 二.Galera复制架构 1. wsrep api 2. 全局事务ID(global transaction id,GTID) 3. Galera复制插件 4. 组通信插件 三.G ...

  9. CentOS 7 Galera Cluster安装全攻略

    2019独角兽企业重金招聘Python工程师标准>>> 最近Hive的原数据要用到mysql,所以又把Galera Cluster又装了一遍,虽然装过很多遍,但依然会有一些模糊的地方 ...

  10. mariadb galera Cluster 多主集群安装实录

    1: 创建MariaDB.repo #vim /etc/yum.repos.d/MariaDB.repo # MariaDB 10.0 CentOS repository list - created ...

最新文章

  1. 两万字的数据库面试题,不看绝对后悔
  2. nagios自写插件—check_file
  3. chrome插件下载
  4. matlab7.0调节视图,新手求救啊!!!matlab7.0在win7启动后命令窗口出现大段代码!...
  5. MySQL查询select语句详解
  6. Linux多线程实践(7) --多线程排序对比
  7. C#开发笔记之03-为什么选择IsNotXXX方法而不是IsXXX方法?
  8. Win7 64bit IIS无法访问ACCESS数据库解决方案
  9. react学习系列1 修改create-react-app配置支持stylus 1
  10. python海龟漂亮图案代码大全_Python游戏海龟图案
  11. 使用Mediacoder压制带有图片的ass字幕
  12. web应用开发相关技术,CSS盒模型概述
  13. lvgl chart
  14. 【元宵快乐】猜灯谜吃元宵 元气满满闹元宵~(附猜灯谜小游戏)
  15. 手里有200万,如何理财
  16. 了解公司企业:Primetics
  17. Taro使用Vue3踏坑日记:Module not found: Can‘t resolve ‘@vue/server-renderer‘ in ‘/Users/...‘
  18. 【Java并发编程实战】 5.5.1章节 闭锁 CountDownLatch 实现
  19. PowerDesigner 添加字段和表名备注
  20. 从今天开始—兄弟连IT教育

热门文章

  1. 关于mysql使用命令行时出现Data too long for column的解决方案:
  2. FJUT 2351 T^T的图论(并查集)
  3. iOS 面试题整理(带答案)二
  4. Node.js验证码模块captchapng
  5. Servlet的request.getRemoteAddr()方法回去地址是0:0:0:0:0:0:0:1
  6. C#的String.Split方法
  7. [导入]哪种图像格式最好?
  8. 记在thinkPHP中一个创建模型的小错误
  9. 关于python字符串format的一些花式用法
  10. vue 及sass安装