20.2.6 采用组复制部署
如果您已经有组复制的现有部署,并且想使用它来创建群集,请将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.
Tip
如果实例具有super_read_only=ON,则可能需要确认 AdminAPI 可以设置super_read_only=OFF。有关更多信息,请参见超级只读和实例。
新群集与组的模式匹配。如果采用的组以单主要模式运行,那么将创建一个单主要集群。如果采用的组以多主要模式运行,则将创建一个多主要群集。例如:
mysql-js> cluster.status();
{
"clusterName": "prodCluster",
"defaultReplicaSet": {
"name": "default",
"primary": "gr-member-1:3306",
"ssl": "REQUIRED",
"status": "OK",
"statusText": "Cluster is ONLINE and can tolerate up to ONE failure.",
"topology": {
"gr-member-2:3306": {
"address": "gr-member-2:3306",
"mode": "R/O",
"readReplicas": {},
"role": "HA",
"status": "ONLINE"
},
"gr-member-1:3306": {
"address": "gr-member-1:3306",
"mode": "R/W",
"readReplicas": {},
"role": "HA",
"status": "ONLINE"
},
"gr-member-3:3306": {
"address": "gr-member-3:3306",
"mode": "R/O",
"readReplicas": {},
"role": "HA",
"status": "ONLINE"
}
}
}
}
如上所示,新创建的集群是单主集群,并使用gr-member-1
作为主集群。