当您使用 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,并退回到connectToPrimarybeingfalse。
要强制连接到辅助实例,请建立到辅助实例的连接并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,因此您不能对它们进行更改。