配置实例后,通过完成以下步骤创建 InnoDB ReplicaSet:
-
连接到一个实例,并使用
dba.createReplicaSet()
创建一个使用 MySQL 异步复制的托管 ReplicaSet, 而不是 InnoDB Cluster 使用的 MySQL 组复制。M ySQL Shell 所连接的 MySQL 实例用作 ReplicaSet 的初始主实例。dba.createReplicaSet()
操作执行多项检查,以确保实例状态和配置与托管 ReplicaSet 兼容,如果是,则在实例上初始化元数据模式。如果 ReplicaSet 创建成功,则返回
ReplicaSet
对象。因此,最好将返回的ReplicaSet
分配给变量。这使您能够使用 ReplicaSet, 例如,通过调用<ReplicaSet>status()
操作。要在实例 rs-1 上创建一个名为 example 的ReplicaSet 并将其分配给 rs 变量,请执行:mysql-js> \connect root@rs-1:3306 ... mysql-js> var rs = dba.createReplicaSet("example") A new replicaset with instance 'rs-1:3306' will be created. * Checking MySQL instance at rs-1:3306 This instance reports its own address as rs-1:3306 rs-1:3306: Instance configuration is suitable. * Updating metadata... ReplicaSet object successfully created for rs-1:3306. Use rs.addInstance() to add more asynchronously replicated instances to this replicaset and rs.status() to check its status.
-
使用返回的 ReplicaSet 对象验证操作是否成功。例如,这提供了
ReplicaSet.status()
操作,该操作显示有关 ReplicaSet 的信息。返回的 ReplicaSet 已分配给变量 rs, 因此执行:mysql-js> rs.status() { "replicaSet": { "name": "example", "primary": "rs-1:3306", "status": "AVAILABLE", "statusText": "All instances available.", "topology": { "rs-1:3306": { "address": "rs-1:3306", "instanceRole": "PRIMARY", "mode": "R/W", "status": "ONLINE" } }, "type": "ASYNC" } }
此输出表明已创建了名为 example 的 ReplicaSet ,并且主示例是 rs-1 。 目前,只有一个实例,下一个任务是向 ReplicaSet 添加更多实例。
注意
从 8.0.32 开始,所有新的复制通道都是在启用 SSL 的情况下创建的。对于 MySQL Shell 8.0.32 采用的复制组,情况并非如此。它们的复制通道保持未加密。
InnoDB ReplicaSet replicationAllowedHost
使用 MySQL Shell 8.0.28 及更高版本创建 InnoDB ReplicaSet 时,如果您有安全要求,希望 AdminAPI 自动创建的所有帐户都具有严格的身份验证要求,则可以为 ReplicaSet 的replicationAllowedHost
配置选项设置一个值。MySQL Shell 选项replicationAllowedHost
允许您将 ReplicaSet 内部管理的复制帐户设置为严格的基于子网的筛选器,而不是默认的通配符值%
。r eplicationAllowedHost
选项可以采用字符串值。例如,要将replicationAllowedHost
设置为192.0.20/24
, 请执行:
mysql-js> var rs = dba.createReplicaSet('example', {replicationAllowedHost:'192.0.2.0/24'})
A new replicaset with instance 'rs-1:3306' will be created.
* Checking MySQL instance at rs-1:3306
This instance reports its own address as rs-1:3306
rs-1:3306: Instance configuration is suitable.
* Updating metadata...
ReplicaSet object successfully created for rs-1:3306.
Use rs.addInstance() to add more asynchronously replicated instances to this replicaset
and rs.status() to check its status.
InnoDB ReplicaSet 可以在创建后进行修改,通过setOption
配置选项设置变量replicationAllowedHost
,执行:
mysql-js> rs.setOption('replicationAllowedHost', '192.0.2.0/24')