PXC常用管理
状态信息
show status like "%wsrep%"; # 查看集群所有信息
- wsrep_cluster_size 集群节点的数量
- wsrep_replicated 被其他节点同步的总数
- wsrep_replicated _bytes 被其他节点同步的总字节数
- wsrep_received 从其他节点结收写入请求的总数
- wsrep_replicated _bytes 从其他节点结收写入请求数据的总字节数
- wsrep_last_applied 同步应用的次数
- wsrep_last_commit 提交事务的次数
队列
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_recv_queue_avg
说明集群队列积累同步请求太多,应该增加线程处理。
流量控制
如果同步队列太大,就会进行流量控制,控制写入速度。例如在集群中添加了一个新节点,该节点中并没有数据。该节点就会对其他节点发出全量同步请求,请求数据量过大,就会发生流量控制。
- wsrep_follow_control_paused 流控暂停时间占比(0-1)
- wsrep_follow_control_send 发送的流控暂停事件的数量 (本节点引发)
- wsrep_follow_control_recv 结收的流控暂停事件的数量
- wsrep_follow_control_interval 同步队列的上下限,超过上限引发流控
- wsrep_follow_control_status 流控状态 off关闭 on开启
解决流控:
解决带宽、增加线程(配置文件中)、更换性能更好的硬件
节点状态
- OPEN : 节点启动成功
- PRIMARY : 节点成功加入集群
- JONNER: 节点同步数据
- JONNED: 节点同步数据成功
- SYNCED: 该节点可以对外同步读写数据
- DONNER: 有节点对改节点进行全量同步
集群的状态
- PRIMARY: 正常状态
- NON-PRIMARY: 脑裂状态
- DISCONNECTED:断开连接状态
脑裂
数据没有同步成功,造成两个节点数据不一致称之为脑裂状态。
PXC方案:如果一个节点能够连接的其他节点数量不足半数,断开该节点。能够连接其他节点的数量超过半数的这些节点组成一个集群,此时处于NON-PRIMARY 状态还能够对外提供读写服务。
集群与节点相关信息
- wsrep_local_state_comment 节点状态
- wsrep_cluster_status 集群状态
- wsrep_connected 节点是否连接到集群
- wsrep_ready 集群是否正常工作
- wsrep_cluster_size 节点数量
- wsrep_desync_count 延时节点数量
- wsrep_incomming_address 节点的IP地址
事务相关信息
- wsrep_cert_deps_distance 事务执行并发数
- wsrep_apply_oooe 结收队列中事务占比
- wsrep_apply_oool 结收队列中事务乱序执行频率
- wsrep_apply_window 结收队列中事务的平均数量
- wsrep_commit_oooe 发送队列中事务占比
- wsrep_commit_oool 发送队列中事务乱序执行频率 (不存在没意义)
- wsrep_commit_window 发送队列中事务的平均数量
启动与关闭(centos6.5)
-
主节点:
service mysql bootstrap-pxc 启动
service mysql stop bootstrap-pxc 关闭 -
其他节点:
service mysql start 启动
service mysql stop 关闭 -
注意:
集群中最后一个关闭的节点,下次启动时,应该按照主节点启动。如何判断哪个是最后一个关闭的节点呢? vi /var/lib/mysql/grastate.bat 打开这个文件,如果safe_to_bootstrap: 1 表是该节点为最后一个关闭的节点。
所有节点的意外退出
此时, vi /var/lib/mysql/grastate.bat 打开这个文件 每个节点safe_to_bootstrap都等于0,挑选一个节点将改值设置为1,按照启动主节点的方法启动,其他启动mysql服务即可。