我正在使用 MySQL 8.0.14 和 InnoDB 集群。 我目前正致力于通过 mySQL shell 创建组复制。
由于我想使用 SSL,因此需要在 dba.createCluster() 上设置 ipWhitelist,如下所示:
var cluster = dba.createCluster('testCluster4', {ipWhitelist:'somedns-1.tosqlnode'})
集群创建成功。现在我想添加另一个实例。
cluster.addInstance('ca@somedns-2.tosqlnode', {ipWhitelist:'somedns-1.tosqlnode,somedns-2.tosqlnode'})
此操作失败,因为第一个实例显示错误,指出非白名单实例正在尝试连接。
<小时/>因此创建另一个:
var cluster = dba.createCluster('testCluster5', {ipWhitelist:'somedns-1.tosqlnode,somedns-2.tosqlnode'})
集群创建成功。现在我想添加另一个实例。
cluster.addInstance('ca@somedns-2.tosqlnode', {ipWhitelist:'somedns-1.tosqlnode,somedns-2.tosqlnode'})
实例已成功添加。
<小时/>真的有必要在集群创建时知道所有实例地址吗?我找不到通过 MySQL shell 更改初始 ipWhitelist 的方法。
最佳答案
是的,确实如此。请注意,它需要是双向的(正如您在第二次尝试中正确设置的那样)。此外,您还可以使用 CIDR 表示法来选择要“列入白名单”的特定子网。
有关更多信息,请查看有关 ip 白名单的文档部分:https://dev.mysql.com/doc/refman/8.0/en/group-replication-ip-address-whitelisting.html
关于通过 Shell 更改正在运行的集群的当前 IP 白名单的可能性,这是不可能的。您需要重新创建集群:
cluster.dissolve({force: true])
var cluster = dba.createCluster('myCluster', {ipWhitelist:'<myIpWhitelist'})
干杯,
米格尔
关于mysql - 创建集群时是否需要知道 ipWhitelist 中包含的所有主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55189823/