Galera Cluster大坑的解决方案
有些同学在使用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大坑的解决方案相关推荐
- MYSQL使用MHA实现主从复制高可用、Galera Cluster介绍、压力测试、my.cnf配置参考
MHA介绍 MHA: Master High Availability,对主节点进行监控,可实现自动故障转移至其它从节点:通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前M ...
- Galera Cluster For MySQL
文章目录 简介 何谓Galera Cluster 为什么需要 Galera Cluster Galera Cluster 如何解决上述问题 注意点 有很多坑? 适用场景 集群搭建 搭建环境 安装依赖包 ...
- Galera Cluster for MySQL 详解(三)——管理监控
目录 一.管理 1. 在线DDL (1)TOI (2)RSU (3)pt-online-schema-change 2. 恢复主组件 (1)了解主组件状态 (2)修改保存的主组件状态 3. 重置仲裁 ...
- 108.第十九章 MySQL数据库 -- MySQL高可用 Galera Cluster(十八)
6.3.3 Galera Cluster 6.3.3.1 Galera Cluster介绍 Galera Cluster:集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的 ...
- Galera Cluster: 一种新型的高一致性MySQL集群架构
2019独角兽企业重金招聘Python工程师标准>>> 1. 何谓Galera Cluster 何谓Galera Cluster?就是集成了Galera插件的MySQL集群,是一种新 ...
- galera mysql_MySQL高可用(Galera Cluster)
Galera Cluster简介 Galera Cluster是集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分 ...
- 高一致性分布式galera cluster(多主)集群
何谓Galera Cluster?就是集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtr ...
- Galera Cluster for MySQL 详解(一)——基本原理
目录 一.同步复制 二.Galera复制架构 1. wsrep api 2. 全局事务ID(global transaction id,GTID) 3. Galera复制插件 4. 组通信插件 三.G ...
- CentOS 7 Galera Cluster安装全攻略
2019独角兽企业重金招聘Python工程师标准>>> 最近Hive的原数据要用到mysql,所以又把Galera Cluster又装了一遍,虽然装过很多遍,但依然会有一些模糊的地方 ...
- mariadb galera Cluster 多主集群安装实录
1: 创建MariaDB.repo #vim /etc/yum.repos.d/MariaDB.repo # MariaDB 10.0 CentOS repository list - created ...
最新文章
- 两万字的数据库面试题,不看绝对后悔
- nagios自写插件—check_file
- chrome插件下载
- matlab7.0调节视图,新手求救啊!!!matlab7.0在win7启动后命令窗口出现大段代码!...
- MySQL查询select语句详解
- Linux多线程实践(7) --多线程排序对比
- C#开发笔记之03-为什么选择IsNotXXX方法而不是IsXXX方法?
- Win7 64bit IIS无法访问ACCESS数据库解决方案
- react学习系列1 修改create-react-app配置支持stylus 1
- python海龟漂亮图案代码大全_Python游戏海龟图案
- 使用Mediacoder压制带有图片的ass字幕
- web应用开发相关技术,CSS盒模型概述
- lvgl chart
- 【元宵快乐】猜灯谜吃元宵 元气满满闹元宵~(附猜灯谜小游戏)
- 手里有200万,如何理财
- 了解公司企业:Primetics
- Taro使用Vue3踏坑日记:Module not found: Can‘t resolve ‘@vue/server-renderer‘ in ‘/Users/...‘
- 【Java并发编程实战】 5.5.1章节 闭锁 CountDownLatch 实现
- PowerDesigner 添加字段和表名备注
- 从今天开始—兄弟连IT教育
热门文章
- 关于mysql使用命令行时出现Data too long for column的解决方案:
- FJUT 2351 T^T的图论(并查集)
- iOS 面试题整理(带答案)二
- Node.js验证码模块captchapng
- Servlet的request.getRemoteAddr()方法回去地址是0:0:0:0:0:0:0:1
- C#的String.Split方法
- [导入]哪种图像格式最好?
- 记在thinkPHP中一个创建模型的小错误
- 关于python字符串format的一些花式用法
- vue 及sass安装