共计 6543 个字符,预计需要花费 17 分钟才能阅读完成。
“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,表示在执行过程中,是全程强势有序的,并且在使用到被修改的表时,都会将其杀死,这是默认的情况,并且是最简单的方法,也推荐使用这种方法;
: