wsrep_slave_threads:建议每个CORE启动4个复制线程,这个参数很大程度上受到I/O能力的影响,一般可以通过观察

wsrep_cert_deps_distance这个状态变量来获取当前最佳的线程数,

参数实际上表示单位时间平均多少个writesets能被执行掉


监控要点:

wsrep_flow_control_paused:这个变量标识当前节点落后于集群的程度,0.0表示没有落后,1.0为flow_control已经停止了,应该尽量保证这个变量值为0.0

如果落后厉害,则应该适当增加复制线程数wsrep_slave_threads

wsrep_cert_deps_distance:这个变量标识当前节点平均时间内并行执行的事务数,这个数据可以用来作为wsrep_slave_threads的参考

同时当并发量很高的时候,这个值也会很大

wsrep_flow_control_sent:表示flow_contro发出FC_PAUSE事件的次数,暂停的次数越多,表示接受到的请求频繁堵满SLAVE队列

,这种情况下不是队列长度不足,就是机器性能太差

wsrep_local_recv_queue_avg:这个表示本地节点平均的接收队列长度,如果不为0.0,则表示接收来的数据不能被及时应用

wsrep_local_send_q_avg:表示本地节点发送数据的队列长度,如果不为0.0,则表示向外发送数据的速度比较慢,有堆积。



高负载引起宕机风险的防治

1、参考建议的监控数据,严格控制

2、对应用的入口SQL详细审核,避免不正常的SQL运行

3、使用一些策略,例如IPTABLES 限制单位时间内的并发量,包个数,来避免宕机

节点故障-故障

1、任何的硬件故障、软件奔溃、网络接近异常,都将造成节点故障。判断故障节点的依据,是根据他是否能够连接

PC(Primary component),而PC是从当前集群中随机选择的,因此不能简单的根据服务器是否能够PING通等外部的方式来判断,需要根据各个节点的wsrep_local_state.

2、故障侦测节点每隔evs.inactive_check_period接收一次数据。

3、一旦节点发生故障,分不同的情况,如果无法进行IST,则需要做SST,代价非常巨大

4、Donor选择,有自动选择和手动指定两种方式,通过wsrep_sst_donor=DONOR_NAME来指定,不指定则在当前集群中随机选择。

5、当某个node选为Donor时,如果使用rsync或者DUMP,这个节点是不能提供客户端服务的,即使使用xtra这个点的性能和稳定性也会受到很大影响,基于这种情况,手动

设置一个,避免高负载的机器被用来做donor


节点故障--恢复

1、节点故障后获取GTID的方法

执行mysqld 加--wsrep-recover参数可获取GTID,如:mysqld --defaults-file=/etc/my.cnf --log_error=/dev/stdout --wsrep-recover

然后调用--wsrep_start_position=设置GTID,启动MYSQL

2、默认情况下,会自动从innodb redolog记录的checkpoint里获取GTID