检查InnoDB集群状态
Cluster对象提供了status()方法,让你能够检查集群的运行情况。在你检查InnoDB集群的状态之前,你需要通过连接到它的任何一个实例来 获取对InnoDB集群对象的引用。但是,如果您想要更改集群的配置,则必须连接到“R/W”实例。执行status()函数可以根据所连接的服务器 实例所感知到的集群视图获取集群状态,并输出状态报告。
集群中的实例状态直接影响状态报告中提供的信息。离开集群的实例与属于集群的实例相比,提供了集群的不同视图。因此,请确保连接到的实 例的状态为在线。
要了解InnoDB集群的运行情况,请使用集群的status()方法:
MySQL JS > \connect root@localhost:3320 Creating a session to 'root@localhost:3320' Please provide the password for 'root@localhost:3320': ****** Save password for 'root@localhost:3320'? [Y]es/[N]o/Ne[v]er (default No): Fetching schema names for auto-completion... Press ^C to stop. Your MySQL connection id is 35 Server version: 5.7.26-log Source distribution No default schema selected; type \useto set one. MySQL localhost:3330 JS > var cluster = dba.getCluster() WARNING: Support for AdminAPI operations in MySQL version 5.7 is deprecated and will be removed in a future release of MySQL Shell MySQL localhost:3330 JS > cluster.status() WARNING: Support for AdminAPI operations in MySQL version 5.7 is deprecated and will be removed in a future release of MySQL Shell { "clusterName": "testCluster", "defaultReplicaSet": { "name": "default", "primary": "127.0.0.1:3310", "ssl": "DISABLED", "status": "OK", "statusText": "Cluster is ONLINE and can tolerate up to ONE failure.", "topology": { "127.0.0.1:3310": { "address": "127.0.0.1:3310", "memberRole": "PRIMARY", "mode": "R/W", "readReplicas": {}, "role": "HA", "status": "ONLINE", "version": "5.7.26" }, "127.0.0.1:3320": { "address": "127.0.0.1:3320", "memberRole": "SECONDARY", "mode": "R/O", "readReplicas": {}, "role": "HA", "status": "ONLINE", "version": "5.7.26" }, "127.0.0.1:3330": { "address": "127.0.0.1:3330", "memberRole": "SECONDARY", "mode": "R/O", "readReplicas": {}, "role": "HA", "status": "ONLINE", "version": "5.7.26" } }, "topologyMode": "Single-Primary" }, "groupInformationSourceMember": "127.0.0.1:3310" }
cluster.status()的输出信息包括以下信息:
.clusterName:在dba.createCluster()过程中分配给集群的名称。
.ssl:集群是否使用安全连接。显示REQUIRED或DISABLED的值,取决于在createCluster()或addInstance()期间如何配置memberSslMode选项 。此参数返回的值对应于实例上的group_replication_ssl_mode服务器变量的值。
.status:集群中该元素的状态。对于整个集群,本文描述了该集群提供的高可用性。例如,状态参见下面的详细信息
.topology:已加入集群的实例。
.Host name of instance:实例的主机名,例如127.0.0.1:3310。
.mode:请参阅下面对mode的描述。
实例状态是下列之一。
.ONLINE:实例在线并参与集群。
.OFFLINE:实例已失去与其他实例的连接。
.RECOVERING:实例正在通过检索它成为联机成员之前需要的事务来尝试与集群同步。
.UNREACHABLE:实例失去了与集群的通信。
.ERROR:实例在恢复阶段或应用事务时遇到错误。
.(MISSING):一个实例的状态,它是已配置集群的一部分,但目前不可用。
MISSING状态是InnoDB集群特有的,它不是由组复制产生的状态。MySQL Shell使用这种状态来表示在元数据中注册的实例,但在实时集群视图中 找不到。
在实例进入ERROR状态后,super_read_only选项将设置为ON。要脱离ERROR状态,必须手动配置该实例为super_read_only=OFF。
模式为R/W(可读可写)或R/O(只读)。在单主模式下,只有标记为“R/W”的实例才能执行更新数据库的事务,因此它是主模式。如果该实例 由于任何原因(如意外停机)变得不可访问,则剩余的一个“R/O”实例自动取代它的位置,并成为新的“R/W”主实例。在多主模式下,多个实 例被标记为“R/W”,并且没有选举的主实例。