Percona XtraDB Cluster集群线程模型

原创 2018年04月17日 10:15:08

Percona XtraDB集群创建一组线程来为其操作提供服务,这些线程与现有的MySQL线程无关。有三个主要线程组:

一、Applier线程

Applier线程应用从其他节点接收的写入集。写消息直接通过gcv_recv_thread。

使用wsrep_slave_threads变量控制线程的数量。默认值是1,这意味着至少有一个wsrep applier线程存在来处理请求。

Applier线程等待一个事件,一旦它捕获到事件,它就使用普通的从应用线程路径应用它,并用wsrep-customization中继日志信息应用路径。这些线程与从属工作线程类似(但不完全相同)。

使用“ Apply and Commit Monitor ” 可以实现协调。一个事务通过两个重要的状态:APPLY和COMMIT。每个事务都向自己申请的监控器进行注册,其申请顺序已经定义。 因此,在应用此事务之前,应用所有具有小于此事务序号的序号(seqno)的事务。 commit也是这样做的(last_left> = trx_.depends_seqno())。

二、回滚线程

只有一个回滚线程在发生冲突时执行回滚。

  并行执行的事务可能会发生冲突并可能需要回滚。
  Applier事务总是优先于本地事务。这很自然,因为Applier事务已被群集接受,并且一些节点可能已经应用了它们。本地冲突交易仍然有一个回滚窗口。

所有需要回滚的事务都被添加到回滚队列中,并通知回滚线程。回滚线程然后迭代队列并执行回滚操作。

如果事务在节点上处于活动状态,并且节点从群集组接收到与本地活动事务冲突的事务写入集,则此类本地事务始终被视为受影响事务以回滚。

出现冲突时,事务处于提交状态或执行阶段。执行阶段的本地事务被强行kill,以等待Applier事务被允许继续进行。提交阶段的本地事务失败并出现认证错误。

三、其他线程

1、服务线程

此线程在启动时创建并用于执行辅助服务。它有两个主要功能:

  在高速缓存的写入集被清除到所述级别后,它释放GCache缓冲区。
  它通知群集组各个节点已提交到此级别的事务。每个节点都维护有关集群中其他节点的一些基本状态信息。收到该消息后,信息将在此本地元数据中更新。

2、接收线程

该gcs_recv_thread线程是第一个查看组中收到的所有消息的线程。

它会尝试根据收到的每条消息分配操作。它将这些消息添加到中央FIFO队列中,然后由Applier线程处理。消息可以包含不同的操作,如状态更改,配置更新,流量控制等。

一个重要的操作是处理一个写集,它实际上是将事务应用于数据库对象。

3、Gcomm连接线程

gcomm连接线程GCommConn::run_fn 用于协调低层组通信活动。把它想象成一个用于沟通的黑匣子。

4、基于动作的线程

除上述之外,还有一些线程是按需创建。SST为捐助者和joiner创建线程(最终派生出一个子进程来托管所需的SST脚本),IST创建接收者和异步发送者线程,PageStore创建后台线程以删除创建的文件。

如果启用校验和并且复制的写入集足够大,则校验和将作为单独线程的一部分完成。

四、参考链接

https://www.percona.com/doc/percona-xtradb-cluster/LATEST/manual/threading_model.html

版权声明:本文为博主原创文章,欢迎扩散,扩散请务必注明出处。 https://blog.csdn.net/robinson_0612/article/details/79970818

移动基于Percona XTRADB Cluster的大数据解决方案

最近因为“棱镜门”事件的曝光,引起了国家对信息安全问题的注意,各大行业也开展起来去“IOE”的行动。对移动而言, 一方面是对信息安全的担心,另一方面是对降低成本的考量,对开源体系架构的引入也成为一种现...
  • china_world
  • china_world
  • 2014-05-16 16:38:04
  • 9534

mysql5.7 Percona XtraDB Cluster 多主集群配置

1.添加用户和组 groupadd -g 1001 mysql useradd  -u 1002 -g mysql mysql 2.关闭防火墙及selinux  /etc/selinux/conf...
  • BASEDEDATO
  • BASEDEDATO
  • 2017-11-28 15:38:08
  • 298

Percona XtraDB Cluster双节点故障的情况

1.  环境 OS:Redhat 6.5 Cluster:Percona-XtraDB-Cluster5.6.22-25 主节点: hostname:mysql-pxc01 ipaddr:192.16...
  • wjf870128
  • wjf870128
  • 2015-04-22 19:55:03
  • 1302

PXC(Percona XtraDB Cluster)安装以及问题解决方法

PXC安装   1、PXC安装环境: 集群名称: pxc-sky node1 : 192.168.246.18 node2 : 192.168.246.19 node3 : 192.168.246.2...
  • sky__liang
  • sky__liang
  • 2015-12-11 13:50:04
  • 3505

Percona XtraDB Cluster 多主集群研究实现MYSQL负载分流

XtraDB是MYSQL开源的一个分支,在数据操作层面上,和MYSQL基本一样。其集群与常用的MYSQL集群特性如下: 比较项 XtraDB集群 MYSQL AN复制 MYSQL+DRBD...
  • nerissa
  • nerissa
  • 2013-12-12 17:09:29
  • 1687

PXC(Percona XtraDB Cluster)单机多实例与多集群安装配置

PXC(Percona XtraDB Cluster)单机多实例与多集群安装配置 pxc原理: 节点接收SQL请求后,在commit之前,由wsrepAPI调用galera库进行集群内广播,所有其他...
  • thundermeng
  • thundermeng
  • 2016-10-14 12:50:29
  • 2331

Percona XtraDB Cluster(PXC)掉电无法正常启动

办公室掉电,PXC集群环境无法启动,也就是说整个集群的状态处于丢失的情形。因此需要采取强制的方式来进行,见下面的描述。...
  • robinson_0612
  • robinson_0612
  • 2017-07-07 10:09:57
  • 1692

PXC(Percona XtraDB Cluster)集群安装

作者在2014Oracle数据库嘉年华中有幸听到了关于去哪网的MySQL数据库基于PXC的高可用架构设计主题。 MySQL和Oracle是完全不同的两种数据库,Oracle重于管理,而MySQL更重要...
  • renfengjun
  • renfengjun
  • 2014-11-22 11:25:39
  • 20536

Percona XtraDB Cluster 简介

错误的MySQL配置 只要定义了wsrep_cluster_address,即使没有定义wsrep_provider参数,MySQL也可以正常启动,但某些希望执行的功能却无法正常工作,而且很难找到问...
  • Stubborn_Cow
  • Stubborn_Cow
  • 2015-12-29 16:01:06
  • 938

Percona galera cluster配置(mysql集群cluster同步)

Percona galera cluster配置(mysql集群cluster同步)
  • z770816239
  • z770816239
  • 2016-12-08 21:09:33
  • 787
收藏助手
不良信息举报
您举报文章:Percona XtraDB Cluster集群线程模型
举报原因:
原因补充:

(最多只允许输入30个字)