mgr单个节点状态
mgr整个组的状态
主要用到4张表
performance_schema.replication_group_member_stats
performance_schema.replication_group_members
performance_schema.replication_connection_status
performance_schema.replication_applier_status
1. replication_group_member_stats
是用来展示组复制所有成员信息的表,有关验证和应用程序的统计信息对于了解申请队列增长情况、触发了多少冲突、检查了多少事务、哪些事务已被所有成员提交等等非常有用。
这张表主要是监控各个节点的性能,如果出现某个节点的事务号和其他节点差很多,那这个节点肯定出现了延迟,如果长时间的延迟,极有可能被群员投票给踢出去。
这张表只有在配置组复制后才会有数据。其中字段包括。
其中最重要的列,也是经常被观察的指数如下
count_transacttions_in_queue:组复制队列中等待冲突检测的事务数,只有当冲突检测通过才会排队应用到各个节点上(远程等待被确认的事务数)
count_transactions_remote_in_applier_queue:当前节点收到的等待的事务数(远程的事务还有多少没有被应用)
count_transanctions_checked:已经通过冲突检测的事务数
count_transactions_remote_applied:当前节点收到的应用的事务数(本地已经应用的事务数)
count_transactions_local_proposed:源自此成员并发送给复制组的事务数。(本地已经提交的事务数)
----------------------------------------------------------------------------------------------------------------------------
cannel_name:这个组复制通道的名称
view_id:组复制对应的视图号
member_id:复制中组成员的 id,这个 id 和本身 mysql 实例的 uuid 没关系
count_conflicts_detected:未通过冲突检测的事务数
count_transactions_rows_validating:冲突检查数据库的大小
transactions_committed_all_members:已在复制组的所有成员上成功提交的事务,显示为 gtid 集。
last_conflict_free_transaction:最后一次冲突事务的 gitd 号
count_transactions_remote_applied:当前节点收到的应用的事务数
count_transactions_local_proposed:源自此成员并发送给复制组的事务数。
count_transactions_local_rollback:源自此成员并被复制组回滚的事务数。
2.replication_group_members
用于监控组内成员复制状态的表
channel_name:组复制的通道名
member_id:组成员 id
member_host:组成员的主机名
member_port:组成员数据库实例端口,注意这里是实例端口
member_state:组成员当前的状态,这个栏位总共有 4 个状态online 表示正常工作状态,表示该节点目前一切 ok。
recovering 表示节点正在加入组中,这个状态有可能是正在同步数据,也有可能是正在和主节点发生通信,如果长期处于这个状态,往往是 host 没配,需要检查下 host 配置
offline 表示这个节点的组复制插件已经加载
unreachable 表示经过仲裁,某个节点已经崩溃或者不可访问。
member_role:成员在组内的角色,如果是单主模式,主的节点就会显示 primary,其他节点显示 secondary,如果是多主模式,所有节点均为 primary。
member_version:mysql 的版本
3. replication_connection_status
用于记录当前节点连接状态的表
channel_name:组复制通道名。
group_name:组复制名,就是组的 uuid 号。
source_uuid:组复制源的 uuid 号。
thread_id:组复制 i/o 功能的 threadid
service_state:显示成员当前的活跃状态,
count_received_heartbeats:从上一次重置主从后获得的心跳数
last_heartbeat_timestamp:节点的最后一次心跳时间
received_transaction_set:与该从站接收的所有事务相对应的一组全局事务 id(gtid)。如果未使用 gtid,则为空。
last_error_number:最后一次 i/o 同步线程错误编号,0 为无错误
last_error_message:最后一次 i/o 同步线程错误日志,记录在 mysql 错误日志中
last_error_timestamp:最后一次 i/o 线程错误的时间。
last_queued_transaction:该节点同步的 relay log 中最后一个事务的 gtid 号
last_queued_transaction_original_commit_timestamp:最后一次,在各个节点中写入的事务准备好提交,产生写集并且发送到各个节点做冲突校验时候的时间。
last_queued_transaction_immediate_commit_timestamp:最后一次事务最终提交的时间。last_queued_transaction_start_queue_timestamp:i / o 线程将最后一个事务放置在 relaylog 中的时间
last_queued_transaction_end_queue_timestamp:进入 relaylog 排队的时间
queueing_transaction:当前 relaylog 中全局事务的 id
queueing_transaction_original_commit_timestamp:当前事务进入写集的时间
queueing_transaction_immediate_commit_timestamp:当前事务最后提交的时间
queueing_transaction_start_queue_timestamp:当前日志进入 relaylog 的时间
可用此表来判断延迟
select received_transaction_set from replication_connection_status where channel_name='group_replication_applier'
union all
select variable_value from global_variables where variable_name ='gtid_executed';
本地已经执行的gtid和接收到远程的gtid的差异
4. replication_applier_status
用于显示当前组复制线程干了啥的表
channel_name:复制通道的名字
service_state:当复制通道的应用程序线程处于活动或空闲状态时显示为 on,表示关闭时,应用程序线程未处于活动状态
remaining_delay:同步复制线程的延迟时间。
count_transactions_retries:sql 线程无法应用日志重试的次数