本节介绍如何使用AdminAPI监控InnoDB集群。
要获取关于InnoDB集群本身结构的信息,请使用
功能:集群
.describe ()
mysql-js > cluster.describe ();{“clusterName”:“testCluster”、“defaultReplicaSet”:{“名称”:“默认”,“拓扑”:[{“地址”:“ic-1:3306”、“标签”:“ic-1:3306”、“角色”:“哈”},{“地址”:“ic-2:3306”、“标签”:“ic-2:3306”、“角色”:“哈”},{“地址”:“ic-3:3306”、“标签”:“ic-3:3306”、“角色”:“哈”}]}}
这个函数的输出显示了InnoDB集群的结构,包括它的所有配置信息,等等。地址、标签和角色值与在检查集群的状态
。集群
.status ()
集群对象提供状态()
方法,该方法使您能够检查集群的运行情况。在你检查InnoDB集群的状态之前,你需要通过连接到它的任何实例来获得一个InnoDB集群对象的引用。但是,如果您想更改集群的配置,则必须连接到“R/W”实例。发行状态()
根据连接到的服务器实例所感知的集群视图检索集群的状态,并输出状态报告。
集群中实例的状态直接影响状态报告中提供的信息。因此,请确保连接到的实例的状态为在线
。
有关InnoDB集群是如何运行的信息,请参考集群的状态()
方法:
mysql-js> var cluster = db . getcluster () mysql-js> cluster.status() {"clusterName": "testcluster", "defaultReplicaSet": {"name": "default", "primary": "ic-1:3306", "ssl": "REQUIRED", "status": "OK", "statusText": "cluster is ONLINE and can up up to ONE .", "topology": {"ic-1:3306": {"address": "ic-1:3306", "mode": "R/W", "readReplicas": {}, "role": "HA", "status": "ONLINE"}, "ic-2:3306": {"address": "ic-2:3306", "mode": "R/O", "readReplicas": {}, "role": "ic-2:3306": "role": "ic-2: HA", "mode": "R/O", "readReplicas": {}, "role": "HA", "readReplicas": {}, "role": "HA", "readReplicas": "HA", "status": "status": "role": "HA", "role": "HA", "status": {}, "role": "HA", "role": "HA", "status": "status": "HA", "role": "HA", "status": "status": "role": "HA", "status": "status": "HA": "HA": "status": "status": "status": "role": "HA": "HA":“在线”},“ic-3:3306”:{“地址”:“ic-3:3306”、“模式”:“R / O”、“readReplicas”:{},“角色”:“哈”,“状态”:“在线 " } } }, " groupInformationSourceMember”:“mysql: / / icadmin@ic-1:3306 "}
的输出
提供以下信息:集群
.status ()
clusterName
:期间分配给该集群的名称dba.createCluster ()
。defaultReplicaSet
:属于某个InnoDB Cluster的包含该数据集的服务器实例。主要的
:集群仅单主模式时显示。显示当前主实例的地址。如果该字段不显示,表示集群运行在多主模式下。ssl
:集群是否使用安全连接。显示的值要求
或禁用
,取决于如何memberSslMode
选项在任意一个过程中都配置了createCluster ()
或addInstance ()
。参数返回的值对应于group_replication_ssl_mode
实例上的Server变量。看到第7.6节“InnoDB集群的安全”。状态
:集群中该元素的状态。对于整个集群,本文描述了该集群提供的高可用性。状态有以下几种:在线
:实例在线且参与集群。离线
:该实例与其他实例失去连接。恢复
:实例试图通过检索它在成为集群之前需要的事务来与集群同步在线
成员。遥不可及的
:实例与集群失去通信。错误
:实例在恢复阶段或应用事务时遇到错误。重要的一旦实例进入
错误
状态,super_read_only
选项设置为在
。离开错误
必须手动配置实例的状态super_read_only =了
。(丢失)
:属于已配置集群的一个实例的状态,但当前不可用。请注意的
失踪
state是针对InnoDB集群的,不是由组复制产生的状态。MySQL Shell使用这个状态来指示在元数据中注册的实例,但在活动集群视图中找不到。
拓扑结构
:已添加到集群中的实例。实例的主机名
:实例的主机名,例如localhost:3310。角色
:该实例在集群中提供什么功能。目前只支持HA,用于高可用性。模式
:服务器是读写(R/W)还是只读(R/O)。的当前状态派生而来super_read_only
变量,以及集群是否具有仲裁。在以前的版本中,mode的值是由实例作为主实例还是辅助实例派生的。通常,如果实例是主实例,则模式为“R/W”,如果实例是备实例,则模式为“R/O”。类的状态如何,集群中没有可见仲裁的任何实例都被标记为“R/O”super_read_only
变量。groupInformationSourceMember
:用于获取集群信息的内部连接,显示为类似uri的连接字符串。通常是最初用于创建集群的连接。
要显示关于集群的更多信息,请使用扩展
选择。从8.0.17版本开始,扩展
选项支持整数或布尔值。配置附加信息
提供时,使用以下值:集群
.status({“扩展”:价值
})
0:禁用附加信息,默认值
1:包括组复制协议版本、组名称、集群成员uuid、组复制报告的集群成员角色和状态,以及fenced系统变量列表
2:包含连接和应用程序处理的事务信息
3:包含每个集群成员复制的更详细的统计信息。
设置扩展
使用布尔值等同于设置整数值0和1。在8.0.17之前的版本中扩展
选项只有布尔值。类似地,以前的版本使用queryMembers
布尔选项,以提供关于集群中实例的更多信息,这相当于设置扩展
为3。的queryMembers
选项已弃用,计划在未来的版本中删除。
当你发出
,或集群
.status({“扩展”:1})扩展
选项设置为真正的
,输出包括:
属性的以下附加属性
defaultReplicaSet
对象:GRProtocolVersion
是集群中使用的组复制协议版本。提示InnoDB集群管理自动使用的组复制协议版本,参见集群和组复制协议更多信息。
groupName
是组的名称,即UUID。
的每个对象的以下附加属性
拓扑结构
对象:fenceSysVars
一个包含AdminAPI配置的受保护系统变量名称的列表。目前考虑的围栏系统变量是read_only
,super_read_only
而且offline_mode
。不管系统变量的值是多少,都要列出它们。instanceErrors
对于每个实例,显示该实例可以检测到的任何诊断信息。例如,如果实例是二级实例,则super_read_only
变量未设置为在
,然后显示警告。此信息可用于排除错误。memberId
每个集群成员UUID。memberRole
组复制插件报告的成员角色,请参见MEMBER_ROLE
的列replication_group_members
表格memberState
由组复制插件报告的成员状态,请参阅MEMBER_STATE
的列replication_group_members
表格
查看有关恢复和常规事务I/O、应用程序工作线程统计信息和任何延迟的信息;应用程序协调器统计信息,如果启用了并行复制应用程序;错误和来自接收者和应用程序线程的其他信息使用值2或3 for扩展
。使用这些值时,将打开到集群中每个实例的连接,以便可以查询其他特定于实例的统计信息。输出中包含的确切统计信息取决于实例的状态和配置以及服务器版本。该信息与中显示的信息相匹配replication_group_member_stats
表中,有关更多信息,请参见匹配列的描述。以下实例在线
有一个交易
部分包含在输出中。以下实例恢复
有一个复苏
部分包含在输出中。当你设置扩展
到2,在任何情况下,这些部分都可以包含以下内容:
appliedCount
:看COUNT_TRANSACTIONS_REMOTE_APPLIED
checkedCount
:看COUNT_TRANSACTIONS_CHECKED
committedAllMembers
:看TRANSACTIONS_COMMITTED_ALL_MEMBERS
conflictsDetectedCount
:看COUNT_CONFLICTS_DETECTED
inApplierQueueCount
:看COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE
inQueueCount
:看COUNT_TRANSACTIONS_IN_QUEUE
lastConflictFree
:看LAST_CONFLICT_FREE_TRANSACTION
proposedCount
:看COUNT_TRANSACTIONS_LOCAL_PROPOSED
rollbackCount
:看COUNT_TRANSACTIONS_LOCAL_ROLLBACK
当你设置扩展
到3,连接
的信息replication_connection_status
表格值3相当于设置deprecatedqueryMembers
选项真正的
。的连接
节可以包含以下内容:
的currentlyQueueing
部分包含当前排队的事务的信息:
immediateCommitTimestamp
:看QUEUEING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
immediateCommitToNowTime
:看QUEUEING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
-现在()
originalCommitTimestamp
:看QUEUEING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
originalCommitToNowTime
:看QUEUEING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
-现在()
startTimestamp
:看QUEUEING_TRANSACTION_START_QUEUE_TIMESTAMP
事务
:看QUEUEING_TRANSACTION
lastHeartbeatTimestamp
:看LAST_HEARTBEAT_TIMESTAMP
的lastQueued
部分有关于最近排队的事务的信息:
endTimestamp
:看LAST_QUEUED_TRANSACTION_END_QUEUE_TIMESTAMP
immediateCommitTimestamp
:看LAST_QUEUED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
immediateCommitToEndTime
:LAST_QUEUED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
-现在()
originalCommitTimestamp
:看LAST_QUEUED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
originalCommitToEndTime
:LAST_QUEUED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
-现在()
queueTime
:LAST_QUEUED_TRANSACTION_END_QUEUE_TIMESTAMP
-LAST_QUEUED_TRANSACTION_START_QUEUE_TIMESTAMP
startTimestamp
:看LAST_QUEUED_TRANSACTION_START_QUEUE_TIMESTAMP
事务
:看LAST_QUEUED_TRANSACTION
receivedHeartbeats
:看COUNT_RECEIVED_HEARTBEATS
receivedTransactionSet
:看RECEIVED_TRANSACTION_SET
threadId
:看THREAD_ID
使用多线程副本的实例具有工人
类所显示的信息replication_applier_status_by_worker
表格
的lastApplied
部分显示了关于工作者申请的最后一个事务的以下信息:
applyTime
:看LAST_APPLIED_TRANSACTION_END_APPLY_TIMESTAMP
-LAST_APPLIED_TRANSACTION_START_APPLY_TIMESTAMP
endTimestamp
:看LAST_APPLIED_TRANSACTION_END_APPLY_TIMESTAMP
immediateCommitTimestamp
:看LAST_APPLIED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
immediateCommitToEndTime
:看LAST_APPLIED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
-现在()
originalCommitTimestamp
:看LAST_APPLIED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
originalCommitToEndTime
:看LAST_APPLIED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
-现在()
startTimestamp
:看LAST_APPLIED_TRANSACTION_START_APPLY_TIMESTAMP
事务
:看LAST_APPLIED_TRANSACTION
的currentlyApplying
部分显示了关于worker当前正在应用的事务的以下信息:
immediateCommitTimestamp
:看APPLYING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
immediateCommitToNowTime
:看APPLYING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
-现在()
originalCommitTimestamp
:看APPLYING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
originalCommitToNowTime
:看APPLYING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
-现在()
startTimestamp
:看APPLYING_TRANSACTION_START_APPLY_TIMESTAMP
事务
:看APPLYING_TRANSACTION
的lastProcessed
Section有以下关于worker处理的最后一个事务的信息:
bufferTime
:LAST_PROCESSED_TRANSACTION_END_BUFFER_TIMESTAMP
-LAST_PROCESSED_TRANSACTION_START_BUFFER_TIMESTAMP
endTimestamp
:看LAST_PROCESSED_TRANSACTION_END_BUFFER_TIMESTAMP
immediateCommitTimestamp
:看LAST_PROCESSED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
immediateCommitToEndTime
:LAST_PROCESSED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
-LAST_PROCESSED_TRANSACTION_END_BUFFER_TIMESTAMP
originalCommitTimestamp
:看LAST_PROCESSED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
originalCommitToEndTime
:LAST_PROCESSED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
-LAST_PROCESSED_TRANSACTION_END_BUFFER_TIMESTAMP
startTimestamp
:看LAST_PROCESSED_TRANSACTION_START_BUFFER_TIMESTAMP
事务
:看LAST_PROCESSED_TRANSACTION
如果启用了并行复制应用程序,则工作对象数组中的对象数量交易
或复苏
匹配已配置的工作者的数量,并包含一个额外的协调器对象。中显示的信息与replication_applier_status_by_coordinator
表格该对象可以包含:
的currentlyProcessing
Section有以下关于正在被worker处理的事务的信息:
immediateCommitTimestamp
:看PROCESSING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
immediateCommitToNowTime
:PROCESSING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
-现在()
originalCommitTimestamp
:看PROCESSING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
originalCommitToNowTime
:PROCESSING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
-现在()
startTimestamp
:看PROCESSING_TRANSACTION_START_BUFFER_TIMESTAMP
事务
:看PROCESSING_TRANSACTION
工人
对象中检测到错误时,对象具有以下信息replication_applier_status_by_worker
表:
lastErrno
:看LAST_ERROR_NUMBER
lastError
:看LAST_ERROR_MESSAGE
lastErrorTimestamp
:看LAST_ERROR_TIMESTAMP
连接
对象中检测到错误时,对象具有以下信息replication_connection_status
表:
lastErrno
:看LAST_ERROR_NUMBER
lastError
:看LAST_ERROR_MESSAGE
lastErrorTimestamp
:看LAST_ERROR_TIMESTAMP
协调员
对象中检测到错误时,对象具有以下信息replication_applier_status_by_coordinator
表:
lastErrno
:看LAST_ERROR_NUMBER
lastError
:看LAST_ERROR_MESSAGE
lastErrorTimestamp
:看LAST_ERROR_TIMESTAMP
的输出
中实例的恢复操作的进度信息集群
.status ()恢复
状态。显示了使用MySQL克隆或增量恢复进行恢复的实例的信息。监视这些字段:
的
recoveryStatusText
字段包含有关正在使用的恢复类型的信息。当MySQL克隆是工作的字段显示”克隆技术进展中”。当增量恢复工作时,现场显示”正在进行的分布式恢复”。当MySQL克隆正在使用
复苏
Field包含一个包含以下字段的字典:cloneStartTime
:克隆进程开始的时间戳cloneState
:克隆进程状态currentStage
:克隆进程所达到的当前阶段currentStageProgress
:当前阶段进度占完成的百分比currentStageState
:当前阶段状态
例子
输出,为简洁而裁剪:集群
.status ()..."recovery": {"cloneStartTime": "2019-07-15 12:50:22.730", "cloneState": "In Progress", "currentStage": "FILE COPY", "currentStageProgress": 61.726837675213865, " currentstageestate ": "In Progress"}, "recoveryStatusText": "Cloning In Progress",…
当使用增量恢复时
扩展
选项设置为1或更大,则复苏
Field包含一个包含以下字段的字典:状态
的状态group_replication_recovery
通道recoveryChannel
:对正在执行增量恢复或恢复通道状态不为关闭的实例显示。增量恢复利用接收线程从源接收事务,应用程序线程将接收到的事务应用到实例上。提供以下信息:applierQueuedTransactionSetSize
:当前排队等待应用的事务的数量。applierState
:复制应用程序的当前状态在
或从
。applierStatus
:应用程序线程的当前状态。中显示的状态的集合applierThreadState
字段。可以是:APPLIED_ALL
:没有等待应用的排队事务应用
:有事务正在被应用在
:线程已连接,没有排队的事务错误
:应用事务时出现错误从
:应用程序线程被禁用
applierThreadState
:任何应用程序线程的当前状态。提供有关应用程序线程正在执行的具体操作的详细信息。有关更多信息,请参见复制SQL线程状态。receiverStatus
:接收线程的当前状态。中显示的状态的集合receiverThreadState
字段。可以是:在
:接收线程已经连接成功,准备接收连接
:接收线程正在连接源线程错误
:接收事务时发生错误从
:接收线程优雅断开
receiverThreadState
:接收线程的当前状态。提供关于接收线程正在做什么的详细信息。有关更多信息,请参见复制I/O(接收器)线程状态。源
:正在应用的事务的源。
例子
输出,为简洁而裁剪:集群
.status ()..."recovery": {"recoveryChannel": {"applierQueuedTransactionSetSize": 2284, "applierStatus": " applied ", "applierThreadState": "Opening tables", "receiverStatus": "ON", "receiverThreadState": " queuqueuing master event to the relay log", "source": " ic2:3306"}, "state": "ON"},…
从MySQL 8.0.16中,组复制有一个用于组的通信协议的概念,参见设置群组通信协议版本了解背景信息。组复制通信协议版本通常需要显式管理,并设置为适应您希望组支持的最老的MySQL Server版本。然而,InnoDB Cluster在使用AdminAPI操作改变集群拓扑结构时,会自动透明地管理其成员的通信协议版本。集群总是使用当前属于集群或加入集群的所有实例都支持的最新通信协议版本。
当一个实例被添加到集群、从集群中删除或重新加入集群,或者在集群上进行重新扫描或重新启动操作时,通信协议版本会自动设置为该实例支持的版本,即MySQL Server的最早版本。
当您通过从集群中删除实例、升级它们并将它们添加回集群中来执行滚动升级时,当旧MySQL Server版本的最后一个实例在升级之前从集群中删除时,通信协议版本将自动升级。
要查看集群中使用的通信协议版本,请使用
函数集群
.status ()扩展
选择启用。中返回的通信协议版本GRProtocolVersion
字段,只要群集具有仲裁且没有群集成员不可访问。
以下操作可以报告实例上运行的MySQL Server版本信息:
集群
.status ()集群
.describe ()集群
.rescan ()
的MySQL Server版本不同,行为也不同集群
会话对象。
集群
.status ()如果满足以下条件之一,a
版本
对象的每个实例JSON对象都返回拓扑结构
对象:的
集群
对象的当前会话是8.0.11或更高版本。的
集群
对象的当前会话运行的版本早于8.0.11,但是扩展
选项设置为3(或已弃用的queryMembers
是真正的
).
例如,在运行8.0.16版本的实例中:
“拓扑”:{" ic-1:3306 ":{“地址”:“ic-1:3306”、“模式”:“R / W”、“readReplicas”:{},“角色”:“哈”,“状态”:“在线”、“版本”:“8.0.16”}
例如,在运行版本5.7.24的实例中:
“拓扑”:{" ic-1:3306 ":{“地址”:“ic-1:3306”、“模式”:“R / W”、“readReplicas”:{},“角色”:“哈”,“状态”:“在线”、“版本”:“5.7.24”}
集群
.describe ()如果
集群
对象的当前会话是8.0.11或更高版本版本
对象的每个实例JSON对象都返回拓扑结构
对象例如,在运行8.0.16版本的实例中:
“拓扑”:[{“地址”:“ic-1:3306”、“标签”:“ic-1:3306”、“角色”:“哈”、“版本”:“8.0.16”}]
集群
.rescan ()如果
集群
对象的当前会话是8.0.11或更高版本,而
操作检测不属于集群的实例集群
.rescan ()版本
对象的每个实例JSON对象都返回newlyDiscoveredInstance
对象。例如,在运行8.0.16版本的实例中:
"新婚发现实例":[{"host": " c-4:3306", "member_id": "82a67a06-2ba3-11e9-8cfc-3c6aa7197deb", "name": null, "version": "8.0.16"}]