当您使用 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
函数。例如,使用 JavaScript:
cluster
.getClusterSet()
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 全局会话,Cluster
、
ClusterSet
或ReplicaSet
对象将保持其与服务器实例的会话。
默认情况下,当您检索处理程序时,MySQL Shell 会尝试连接到主实例。设置
connectToPrimary
选项以配置此行为。
如果
connectToPrimary
是true
并且活动的全局 MySQL Shell 会话不是主实例,则 MySQL Shell 查询主实例。如果集群中没有法定人数,则操作失败。如果
connectToPrimary
是false
,检索到的对象使用为活动会话指定的服务器实例,换句话说,与 MySQL Shell 的当前全局会话相同的实例。如果
connectToPrimary
未指定,MySQL Shell 将connectToPrimary
视为true
,并退回到connectToPrimary
beingfalse
。
要强制连接到辅助实例,请建立到辅助实例的连接并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
,因此您不能对它们进行更改。