PXC集群信息可以分为队列信息、复制信息、流控信息、事务信息、状态信息。这些信息可以通过sql查询到。每种信息的详细意义可以在官网查看。
1. 复制信息
show status like '%wsrep%';
状态 | 描述 |
---|---|
wsrep_replicated | 被其他节点复制的次数 |
wsrep_replicated_bytes | 发送到其他节点的写入集的总大小(以字节为单位)。 |
wsrep_received | 从其他节点处收到的写入请求书 |
wsrep_received_bytes | 从其他节点接收的写入集的总大小(以字节为单位)。 |
wsrep_local_commits | 节点上的写入集数目 |
参数很多,可以上官网查询对应信息,在这里只举例说明几个重要的信息。
2. 队列信息
队列是一种很好的缓存机制,如果pxc正在满负荷工作,没有线程去执行数据的同步,同步请求会缓存到队列中,然后空闲线程从队列中取出任务,执行同步的请求,有了队列pxc就能用少量的线程应对瞬时大量的同步请求。
状态 | 描述 |
---|---|
wsrep_local_send_queue | 发送队列的长度(瞬时同步的请求数量) |
wsrep_local_send_queue_max | 发送队列的最大长度 |
wsrep_local_send_queue_min | 发送队列的最小长度 |
wsrep_local_send_queue_avg | 发送队列的平均长度 |
wsrep_local_recv_queue | 接收队列的长度 |
wsrep_local_recv_queue_max | 接收队列的最大长度 |
wsrep_local_recv_queue_min | 接收队列的最小长度 |
wsrep_local_recv_queue_avg | 接收队列的平均长度 |
当发送队列的平均长度(wsrep_local_send_queue_avg)值很大,发送队列的长度(wsrep_local_send_queue)也很大的时候,说明pxc集群同步数据的速度已经很慢了,队列里边积压了大量的同步请求,这个时候就得检查一下网速是不是正常,或者同步的线程数量是不是太少。
当接收队列的平均长度(wsrep_local_recv_queue_avg)值很大,接收队列的长度(wsrep_local_recv_queue)也很大的时候,这说明本地没有足够的线程去执行持久化的操作,增加线程就可以解决这个问题。
3. 流量控制信息(流控信息)
流量控制就是pxc集群在同步速度较慢的情况下,为了避免同步速度跟不上写入速度而推出的一种限速机制,就是限制数据的写入,直到同步队列的长度变小,同步速度变快为止,才会解除流量控制。流量控制的后果很严重,而且一个很小的操作就会引发流量控制。
状态 | 说明 |
---|---|
wsrep_flow_control_paused_ns | 流控暂停状态下花费的总时间(纳秒) |
wsrep_flow_control_paused | 流量控制暂停时间的占比(0~1) |
wsrep_flow_control_sent | 发送的流控暂停事件的数量 |
wsrep_flow_control_recv | 接收的流控暂停事件的数量 |
wsrep_flow_control_interval | 流量控制的下限和上限。上限是队列中允许的最大请求书。如果队列达到上限,则拒绝新的请求。当处理现有请求时,队列会减少,一旦到达下限,将再次允许新的请求 |
wsrep_flow_control_status | 流量控制状态 OFF:关闭 0N: 开启 |
流控的主要原因节点之间同步的速度慢,队列积压了大量的请求,这才是流控的主要原因。
流控解决办法
- 改善网速,提高带宽,更换交换机,千兆网卡更换成万兆网卡
- 增加线程,线程多了执行的速度也就快了。队列里边就不会积压大量的请求
- 提升硬件性能,比如升级CPU,内存以及更换光纤硬盘等等都可以提高写入速度
第一项和第三项属于更换硬件的方法,主要说一下第二个方法增加线程数提升同步速度。在pxc的配置文件加上wsrep_slave_threads参数。代表的是本地执行队列的线程数量,一般这个数是CPU线程数的1-1.5倍。比如服务器CPU是8核16线程的,这里就可以写16-24就可以。保存之后重启服务
wsrep_slave_threads=16
4. 节点与集群的状态信息
状态 | 说明 |
---|---|
wsrep_local_state_comment | 节点状态 Joining 节点正在加入到pxc集群中、Joined 节点已经加入到pxc集群中、Synced 节点可以提供读写服务,算正常的状态、Donar/Desynced 如果有节点跟当前节点同步,则进入此状态,不能提供读写服务 |
wsrep_cluster_status | 集群状态(Primary 正常状态、Non-Primary 出现了脑裂请求、Disconnected 不能提供服务,已经出现宕机了) |
wsrep_connected | 节点是否连接到集群 |
wsrep_ready | 集群是否正常工作 |
wsrep_cluster_size | 节点数量 |
wsrep_desync_count | 延时节点数量 |
wsrep_incoming_addresses | 集群节点IP地址 |
5. 事务相关信息
状态 | 说明 |
---|---|
wsrep_cert_deps_distance | 事务执行并发数 |
wsrep_apply_oooe | 接收队列中事务的占比 |
wsrep_apply_oool | 接收队列中事务乱序执行的顺序 |
wsrep_apply_window | 接收队列中事务的平均数量 |
wsrep_commit_oooe | 发送队列中事务的占比 |
wsrep_commit_oool | 无任何意义,不存在本地的乱序提交 |
wsrep_commit_window | 发送队列中事务的平均数量 |