MySQL Shell 9.0  /  ...  /  采用组复制部署

7.4.7 采用组复制部署

如果您有现有的组复制部署,并且希望使用它来创建集群,请将 adoptFromGR 选项传递给 dba.createCluster() 函数。创建的 InnoDB 集群与复制组是作为单主模式还是多主模式运行相匹配。

要采用现有的组复制组,请使用 MySQL Shell 连接到组成员。在以下示例中,采用了一个单主组。我们连接到 gr-member-2(一个辅助实例),而 gr-member-1 则作为组的主实例运行。使用 dba.createCluster() 创建集群,并传入 adoptFromGR 选项。例如

mysql-js> var cluster = dba.createCluster('prodCluster', {adoptFromGR: true});

A new InnoDB cluster will be created on instance 'root@gr-member-2:3306'.

Creating InnoDB cluster 'prodCluster' on 'root@gr-member-2:3306'...
Adding Seed Instance...

Cluster successfully created. Use cluster.addInstance() to add MySQL instances.
At least 3 instances are needed for the cluster to be able to withstand up to
one server failure.
提示

如果实例的 super_read_only=ON,则您可能需要确认 AdminAPI 可以设置 super_read_only=OFF。有关更多信息,请参阅 超级只读模式下的实例配置

如果您没有指定 adoptFromGR: true,并且目标服务器实例属于某个复制组,则 MySQL Shell 会提示您确认是否要采用该复制组。如果您指定了 adoptFromGR: false,则如果发现实例属于某个复制组,则操作会停止,并且不会出现提示。

新集群与组的模式相匹配。如果采用的组在单主模式下运行,则会创建一个单主集群。如果采用的组在多主模式下运行,则会创建一个多主集群。

注意

无法在与 adoptFromGR 相同的命令中定义集群使用的通信栈,集群最初必须使用被采用组使用的通信栈。如有必要,您可以在采用该组后,使用 rebootClusterFromCompleteOutage 更改通信栈。请参阅 第 7.5.9 节“配置组复制通信栈”