8

mysql高可用-利来国际app

陈家睿 2021-11-17
7410


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 线程无法应用日志重试的次数


最后修改时间:2021-11-19 11:09:12
「喜欢文章,快来给作者赞赏墨值吧」
1人已赞赏
【利来手机国际的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:[email protected]进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论