Documentation Home
MySQL 外壳 8.0  / 第 9 章 MySQL InnoDB 副本集  /  9.3 创建 InnoDB 副本集

9.3 创建 InnoDB 副本集

配置实例后,通过 完成 以下步骤创建 InnoDB ReplicaSet:

  1. 连接到实例并用于 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.
  2. 使用返回的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"
        }
    }

    此输出显示名为的 ReplicaSet example已创建,并且主要是rs-1。目前,只有一个实例,接下来的任务是将更多的实例添加到 ReplicaSet 中。

InnoDB ReplicaSet replicationAllowedHost

在使用 MySQL Shell 8.0.28 及之后的版本创建 InnoDB ReplicaSet 时,如果您有安全需求,希望 AdminAPI 自动创建的所有帐户都有严格的身份验证要求,您可以为 replicationAllowedHostReplicaSet 的配置选项设置一个值。MySQL Shell 选项允许您将replicationAllowedHost ReplicaSet 的内部管理复制帐户设置为严格的基于子网的过滤器,而不是默认的通配符值。 %replicationAllowedHost选项可以采用字符串值。例如,要设置 replicationAllowedHost192.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')