“galera 参数解析:”
1、状态参数:
--wsrep_last_committed:
表示的是当前节点最新提交的事务号,也是最新galera GTID的后半部分,前半部分是参数wsrep_local_state_uuid的值,在每次执行提交、DDL执行完成或APPLY之后,都会更新这个值;
--wsrep_replicated:
表示当前节点已经复制过的事务数目。
--wsrep_replicated_bytes:
与参数wsrep_replicated相对应,每一个事务的大小不同,这个参数表示已经复制的wsrep_replicated个事务总字节大小(key和data)的总和;
--wsrep_repl_keys:
当前节点已经复制的wsrep_replicated个事务对应的总的key的数目,一个事务可以包含多个key;
--wsrep_repl_keys_bytes:
与参数wsrep_repl_keys对应,所有发送的key的大小加起来的值,代表总的字节大小;
--wsrep_repl_data_bytes:
与参数wsrep_repl_keys_bytes对应,与上面几个参数的关系时:wsrep_replicated_bytes=wsrep_repl_keys_bytes+wsrep_repl_data_bytes+wsrep_replicated*64;
--wsrep_received:
与参数wsrep_replicated对应,表示当前节点已经收到的从写节点复制过的事务数,单位为事务个数;
--wsrep_received_bytes:
对参数wsrep_received对应,表示收到的所有事务包含的key及DATA的字节数
--wsrep_local_commits:
表示当前节点本机提交的事务个数
--wsrep_local_cert_failures
表示本地节点验证失败的 次数
--wsrep_local_replays:
表示本地做replay的次数,这个参数值越大,表示本地出错频率越高
--wsrep_local_send_queue:
表示当前节点在等待复制的事务个数,就是发送队列的长度;如果该参数值越大,说明本地压力或网络性能有问题,可以作为监控指标;
--wsrep_local_send_queue_max:
当前节点历史上等待队列最大的事务数目;
--wsrep_local_send_queue_min:
当前节点历史上等待列最小的事务数目,一般就是0
--wsrep_local_send_queue_avg:
当前节点自从上次flush参数之后,等待队列长度的平均值。其值越大则表示压力越大,但是这个参数中没有包括flow_control的等待;
--wsrep_local_recv_queue:
表示当前节点从其他节点接受的队列中事务个数,这个队列与flow control有关,如果这个值达到gcs.fc_limit值的话,就会发生flow control,本节点会向整个集群发送flow control小心,整个集群会被阻塞,二等地wsrep_local_recv_queue的值小于gcs.fc_limit*gcs.fc_factor之后,flow control解除。
--wsrep_local_recv_queue_mas:
表示当前节点历史接收队列中事务的最大个数
--wsrep_local_recv_queue_min:
表示当期节点历史接收队列中事务的最小个数
--wsrep_local_recv_queue_avg:
表示当前节点历史接收队列中事务的平均个数,如果某个节点的平均值都比其他的大,则可以考虑这个机器的硬件性能是不太好,或压力造成的;
--wsrep_local_cached_downto:
表示当前节点cache中的最小GTID值,可以决定集群中其他节点在启动时,是需要做IST还是SST。
--wsrep_flow_control_paused_ns:
表示由于flow control消息引起的集群阻塞时间长度,单位是纳秒。这个参数不能通过flush status来重置。它的值是递增累计的;
--wsrep_flow_control_paused:
表示从上次flush status之后开始,新产生的FC暂停时间与 从flush开始到show status like "wsrep%"命令执行的这段时间的比值,可以理解为一个暂停时间。这个值越接近0,说明系统越正常,如果差不多为1,则说明当前系统基本不能做复制了;
--wsrep_flow_control_sent:
当一个节点的复制任务队列长度超过fc_limit时,这个节点就会给整个集群发送FC消息,这个参数表示当前节点向整个集群发送FC消息的次数,这个值越大表示这个节点做的越慢。如果这个值突增了,则说明这个节点有可能出现了问题,或这个节点负载增大了,导致apply写集变慢;
--wsrep_flow_control_recv:
表示当前节点收到FC消息的次数。当这个参数突增时,就需要查看是哪个节点的sent值突增了,那么这个 节点就有可能存在性能问题;
--wsrep_cert_deps_distance:
表示一个事务的GTID2和它所依赖的事务的GTID1之间差值的总和,与这段时间内所做的总的验证通过的事务(n_certified)个数的比值。
--wsrep_commit_oooe:
这个参数的值永远是0,如果出现别的值,请看官网资料
--wsrep_commit_oool:
这个参数的值永远是0,如果出现别的值,请看官网资料
--wsrep_commit_window:
这个参数与上面的参数还是相关的,在每次提交时,都会检查oooe;如果这个值越大,这说明真个提交过程的顺序越乱,写入事务压力不太平衡;如果越接近1,则说明写入越有秩序,事务相对比较均匀;
--wsrep_apply_oooe:
这个参数和上面oooe的道理是一样的,如果这个值很接近0,则说明这个系统的执行基本是串行的;
--wsrep_apply_oool:
与参数wsrep_apply_oooe对应,这个参数标的含义是,如果值越大,则表示并行执行时乱序的现象越多;如果值越小,则说明基本是顺序执行的;
--wsrep_apply_window:
这个参数值与上面的对应,这个值越大,表示并行apply事务间的GTID相差越大,这个节点的活动也就越频繁;
--wsrep_local_state:
表示当前节点的状态,(有4个值: 1:表示正在请求加入集群,速度很快一般看不到这个状态;2:表示正在同步数据;3:表示当前节点已经加入集群;4:表示当前节点与整个集群是完全相同的)
--wsrep_local_state_comment:
这个参数与上面参数的4个状态值一一对应的,是对上面节点值的一个描述;
--wsrep_cert_index_size:
表示当前节点的验证队列中,总共有多少个key;
--wsrep_causal_reads:
表示的是处理这种写集等待的次数,不过这个参数已经不用了
--wsrep_cert_interval:
表示的是,所有事务的GTID值与它们各自可以看到的最新提交事务的GTID值之间差值的总和,与这段时间内所做的被验证通过事务的总个数的比值;
--wsrep_evs_repl_latency:
表示GCOMM在消息传送时的复制延迟,单位是秒;采样时间通过参数evs.stats_report_period来控制,默认是PT1M
--wsrep_incoming_addresses:
表示当前急群众,所有已经加入或正在加入集群的节点信息,格式为:IP:端口,IP:端口,可以通过该信息来做监控;
--wsrep_cluster_size:
表示当前集群中节点的个数,与参数wsrep_incoming_addresses对应,也可以作为监控项,一般监控条件必须大于或等于3,如果是3的话,则会发生脑裂的问题;
--wsrep_local_bf_aborts:
表示当前节点在运行过程中,由于事务的冲突,导致本地事务被主动取消的事务个数。如果这个值比较大,说明集群的写入冲突比较多,可能需要调整写入的方式,比如切换写节点等;
--wsrep_local_index:
表示当前节点在集群中的编号。在集群中,每个节点都有一个唯一的编号,从0开始计数
--wsrep_ready:
一个很重要的监控项,可以知道当前节点的状态是不是可以抚慰,正常情况下为ON,如果变为OFF,则可能是发生了脑裂,或者和其他节点之间的网络连不上,又或者是galera集群没有正常启动等;一般可以通过命令set global wsrep_provider_options='pc.bootstrap=yes' 来恢复,不过在执行这个命令之后,需要观察整个集群的状态,不然可能会导致这个节点在逻辑上脱离集群。这个命令的作用就是让当前节点变为primary,如果执行了,则说明确定要使用这个节点来提供服务了;
2、变量参数:
--wsrep_provider_options:
---cert.log_conflicts:
在galera中,提交的每一个事务都会做验证,看看是不是有依赖关系,并坚持是不是有冲突等,发现了冲突,就由这个参数来控制是否要将冲突记录下来,从而可以通过日志查出原因或用于做一些其他的工作,日志会被记录到error_log文件中;
---gcache.dir:
用来指定GCache文件的目录,只有在gcache.name参数指定的是相对路径时,这个目录才会起作用,而如果gcache.name指定的是绝对路径,则这个参数就被忽略了,如果这个参数没有指定,则会被设置为参数base_dir的值;
---gcache.name:
用来指定GCache文件的名字,名字中也可以带着路径,包括绝对路径及相对路径;
---gcache.mem_size:不建议使用!官方已经弃用
---gcache.page_size:
这个参数表示的就是新建物理文件的大小,如果一个还是不够用,则会继续新建同样大小的物理文件,而当GCache被purge之后,物理文件的GCache就会被清除,当文件中没有有效的写集内容时,文件也会被删除掉。所以只要物理文件出现,就说明GCache不够用了;
---gcache.size:不建议使用!官方已经弃用
---gcs.fc_limit:
这个参数控制的就是接受队列达到多大时,触发FC
---gcs.fc_factor:
这个参数表示是,接收队列在多大时,FC会解除。这个参数是一个比例,gcs.fc_limit X gcs.gc_factor的结果就是FC解除时的接收队列长度。如果小于这个长度,则FC解除;
---gcs.fc_master_slave :
这个参数与上面两个参数是相关的,如果设置为yes,表示当前集群的使用方式为主从模式,也就是单点写入的模式,其他节点都是从节点;如果设置为no的话,说明是多点写入模式,则gcs.fc_limit最终生效的值就会发生变化。
---gcs.sync_donor:
这个参数控制的是,在state transfer的过程中,donor是否要发送flow control消息;如果将这个参数设置为no,表示不产生flow control,这样就是一种非阻塞式的state transfer;
---gmcast.listen_addr:
这个值是用来感知其他节点的加入操作的,而新加入节点在选择donor之后会向这个地址发送消息,这就可以建立联系的;
---gmcast.segment:
这个值的设置是用来在选择donor时,确定哪个节点具有优先权的,范围是0-255,值越大,优先权越高。一般都设置为0,也就是自动选择donor;
---ist.recv_addr:
这个地址是用来设置做IST时joiner的接收地址的,默认情况下,设置为wsrep_node_address所指定的地址,端口为单独的接收端口,格式为IP:PORT
---repl.commit_order:
这个参数控制的是galera并发控制的行为,针对的是提交操作。为了使所有节点产生的binlog完全一样,建议这个值设置为3;
---repl.max_ws_size:
这个参数,是用来控制写集复制大小的,单位是字节;
---pc.bootstrap:
这个参数可以用来将当前节点状态为不可服务状态(non-primary components)的节点,变为primary components状态的节点;一般讲这个参数的命令设置为:set global wsrep_provider_options='pc.bootstrap=yes';,用于快速处理故障,恢复线上服务;
--wsrep_start_position:
这是参数是PXC版本的MySQLd新增的一个参数,用来在节点启动时,指定当前节点最新的GTID值,或者是指定当前节点开始向集群要增量数据点的位置;
--wsrep_slave_threads:
这个参数,是用来设置galera cluster集群中,从节点执行apply时用于做并行复制的线程个数。
---wsrep_retry_autocommit:
这个参数是来控制事务执行行为的,如果验证失败,则每个节点应该都是验证失败的,那么每个节点都会失败,从节点在验证失败的情况下,直接忽略写集即可;而主节点是通过参数wsrep_retry_autocommit来控制,如果不为0,则当前事务(自动提交的情况下)会再执行一次,从头到尾重新执行,然后再次发送、验证等;
--wsrep_recover:
这个参数,是用来找到某一个节点(处于shutdown状态)最新GTID值的,它只需要去innodb的ibddata的一个固定位置,找到这个GTID值,然后将其输入到日志文件中,从而可以了解最新的位置及与集群的差集;
--wsrep_on:
这个参数用来控制当前节点的写入是不是想要复制到其他节点。默认情况下,为了保证集群的一致性,都会将一个节点的写入,复制到其他节点;
--wsrep_max_ws_size:
这个参数,用来控制galera cluster在某一个节点写入事务大小,这里指的是keys及DATA二者加起来的byte数目,这是个安全性的参数;
--wsrep_max_ws_rows:
这个参数,用来控制galera cluster在某一个节点写入事务所影响的行数。如果超过这个值,则直接抛出异常,是一种安全性的参数;
--wsrep_desync:
在复制延迟的节点上设置这个参数为on,这样这个节点就会变成了一种异步复制的模式,此时主库可以一直写入,从节点也一直apply,如果接受任务队列的长度已经超过了fc.limit值,则这个从节点也不会发送flow control小心,整个集群的写入安然无恙,只是有可能从节点的数据不是最新的了,有一段时间的延迟,如果可以几首,那长期保持这样的状态也没什么不好的;如果延迟问题没有了,那就不会再出现任务堆积的情况了,这是可以再讲这个参数值设置为OFF,整个集群又保持一致了,就变成了真真正正的galera cluster;
--wsrep_cluster_address:
这个参数,格式类似:gcomm://192.168.1.1:3306,192.168.1.2:3306,每一个节点,启动时都会通过设置这个参数来找到集群中的其他节点,指定的节点中可以是已经启动的,也可以是没有启动的,galera会自动选择并加入。建议在集群变更时尽量保证这个参数的值与集群中实际节点一致,避免在以后变更时出现不必要的麻烦;
--wsrep_OSU_method:
这个参数是用来控制DDL执行行为的;默认情况它的值是TOI,表示在执行过程中,是全程强势有序的,并且在使用到被修改的表时,都会将其杀死,这是默认的情况,并且是最简单的方法,也推荐使用这种方法;