配置实例后,通过 完成 以下步骤创建 InnoDB ReplicaSet:
-
连接到实例并用于
dba.createReplicaSet()
创建使用 MySQL 异步复制的托管 ReplicaSet,而不是 InnoDB Cluster 使用的 MySQL Group Replication。MySQL Shell 连接到的 MySQL 实例用作 ReplicaSet 的初始主实例。该
dba.createReplicaSet()
操作执行多项检查以确保实例状态和配置与托管 ReplicaSet 兼容,如果是,则在实例上初始化元数据模式。如果 ReplicaSet 创建成功,
ReplicaSet
则返回一个对象。因此,最佳做法是将返回 值分配ReplicaSet
给一个变量。这使您能够使用 ReplicaSet,例如通过调用<ReplicaSet>status()
操作。要创建一个以example
实例命名的 ReplicaSet 并将rs-1
其分配给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.add_instance() to add more asynchronously replicated instances to this replicaset and rs.status() to check its status.
-
使用返回的
ReplicaSet
对象来验证操作是否成功。例如,这提供了
显示有关 ReplicaSet 的信息的操作。返回ReplicaSet
.status()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" } }
此输出显示名为的 ReplicaSet
example
已创建,并且主要是rs-1
。目前,只有一个实例,接下来的任务是将更多的实例添加到 ReplicaSet 中。
在使用 MySQL Shell 8.0.28 及之后的版本创建 InnoDB ReplicaSet 时,如果您有安全需求,希望 AdminAPI 自动创建的所有帐户都有严格的身份验证要求,您可以为
replicationAllowedHost
ReplicaSet 的配置选项设置一个值。MySQL Shell 选项允许您将replicationAllowedHost
ReplicaSet 的内部管理复制帐户设置为严格的基于子网的过滤器,而不是默认的通配符值。
%
该
replicationAllowedHost
选项可以采用字符串值。例如,要设置
replicationAllowedHost
为
192.0.2.0/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 以replicationAllowedHost
通过
setOption
配置选项设置变量,方法是发出:
mysql-js> rs.setOption('replicationAllowedHost', '192.0.2.0/24')