Documentation Home
MySQL 外壳 8.0  / 第 6 章 MySQL AdminAPI  /  6.3 检索处理程序对象

6.3 检索处理程序对象

当您使用 AdminAPI 时,您使用代表 InnoDB Cluster、InnoDB ClusterSet 或 InnoDB ReplicaSet 的处理程序对象。您将此对象分配给一个变量,然后使用可用的操作来监视和管理 InnoDB Cluster、InnoDB ClusterSet 或 InnoDB ReplicaSet。

要检索处理程序对象,您需要与属于 InnoDB Cluster、InnoDB ClusterSet 或 InnoDB ReplicaSet 的活动实例之一建立连接。例如,当您使用创建集群时dba.createCluster(),该操作会返回一个Cluster可以分配给变量的对象。您使用此处理程序对象来处理集群。例如,添加实例或检查集群的状态。如果您想Cluster 在以后再次检索对象,例如在重新启动 MySQL Shell 之后,请使用该 函数。例如,使用 JavaScript: dba.getCluster([name],[options])

mysql-js> var cluster1 = dba.getCluster()

或者使用 Python:

mysql-py> cluster1 = dba.get_cluster()

要检索ClusterSet表示 InnoDB ClusterSet 部署的对象,请使用 dba.getClusterSet()or cluster.getClusterSet() 函数。例如,使用 JavaScript:

mysql-js> myclusterset = dba.getClusterSet()

或者使用 Python:

mysql-py> myclusterset = dba.get_cluster_set()
笔记

当你使用一个ClusterSet对象时,你从中获取它的服务器实例必须在 InnoDB ClusterSet 中仍然在线。如果该服务器实例离线,该对象将不再工作,您需要从 InnoDB ClusterSet 中仍然在线的服务器重新获取它。

使用该dba.getReplicaSet()操作检索ReplicaSet对象。例如,使用 JavaScript:

mysql-js> var replicaset1 = dba.getReplicaSet()

或者使用 Python:

mysql-py> replicaset1 = dba.get_replica_set()

如果您不指定 a name,则返回默认对象。返回的对象使用一个新的会话,独立于 MySQL Shell 的全局会话。这确保如果您更改 MySQL Shell 全局会话,ClusterClusterSetReplicaSet 对象将保持其与服务器实例的会话。

默认情况下,当您检索处理程序时,MySQL Shell 会尝试连接到主实例。设置 connectToPrimary选项以配置此行为。

  • 如果connectToPrimarytrue并且活动的全局 MySQL Shell 会话不是主实例,则 MySQL Shell 查询主实例。如果集群中没有法定人数,则操作失败。

  • 如果connectToPrimaryfalse,检索到的对象使用为活动会话指定的服务器实例,换句话说,与 MySQL Shell 的当前全局会话相同的实例。

  • 如果connectToPrimary未指定,MySQL Shell 将connectToPrimary视为 true,并退回到 connectToPrimarybeing false

要强制连接到辅助实例,请建立到辅助实例的连接并connectToPrimary 通过在 JavaScript 中发出以下命令来使用该选项:

mysql-js> shell.connect(secondary_member)
mysql-js> var cluster1 = dba.getCluster(testCluster, {connectToPrimary:false})

WARNING: You are connected to an instance in state 'Read Only'
Write operations on the InnoDB cluster will not be allowed.

<Cluster:testCluster>

或者,通过在 Python 中发出以下命令:

mysql-py> shell.connect(secondary_member)	
mysql-py> cluster1 = dba.get_cluster(testCluster, connectToPrimary='false')

WARNING: You are connected to an instance in state 'Read Only'
Write operations on the InnoDB cluster will not be allowed.

<Cluster:testCluster>
笔记

辅助实例有 super_read_only=ON,因此您不能对它们进行更改。