9.3 创建InnoDB副本集

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

  1. 连接到实例并用于 dba.createReplicaSet()创建使用 MySQL 异步复制的托管 ReplicaSet,而不是 InnoDB Cluster 使用的 MySQL 组复制。MySQL Shell 连接到的 MySQL 实例用作 ReplicaSet 的初始主实例。

    dba.createReplicaSet()操作执行多项检查以确保实例状态和配置与托管 ReplicaSet 兼容,如果是,则在实例上初始化元数据模式。

    如果ReplicaSet创建成功, ReplicaSet则返回一个对象。因此,最佳实践是将返回值分配 ReplicaSet给变量。这使您能够使用 ReplicaSet,例如通过调用 status()操作。example 要创建以实例命名的 ReplicaSetrs-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.addInstance() 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 添加更多实例。

ReplicaSet加密和认证

从 MySQL Shell 8.0.33 开始,副本可以验证源的身份并使用客户端 SSL 证书进行身份验证。添加了以下选项 dba.createReplicaSet

  • memberAuthType:定义用于内部复制帐户的身份验证类型。该选项采用以下值之一:
    • PASSWORD:帐户仅使用密码进行身份验证。
    • CERT_ISSUER:帐户使用客户端证书进行身份验证,该证书必须与预期的颁发者匹配。该值相当于 VERIFY_CA.
    • CERT_SUBJECT:帐户使用客户端证书进行身份验证,该证书必须与预期的颁发者和主题相匹配。该值相当于 VERIFY_IDENTITY.
    • CERT_ISSUER_PASSWORD``PASSWORD:帐户使用和 值的组合进行身份验证 CERT_ISSUER
    • CERT_SUBJECT_PASSWORD``PASSWORD:帐户使用和 值的组合进行身份验证 CERT_SUBJECT
  • certIssuer``memberAuthType:如果包含 CERT_ISSUER或 , 则定义身份验证所需的证书颁发者 CERT_SUBJECT
  • certSubject:定义实例的证书主体。如果 memberAuthType包含 ,则为必填项CERT_SUBJECT
  • replicationSslMode:定义replicaSet中复制通道的认证类型。该选项采用以下值之一:
    • DISABLED:复制通道禁用 TLS 加密。
    • REQUIRED:复制通道启用 TLS 加密。
    • VERIFY_CA:与“必需”相同,但另外根据配置的证书颁发机构 (CA) 证书验证对等服务器 TLS 证书。
    • VERIFY_IDENTITY:与 VERIFY_CA 相同,但另外验证对等服务器证书是否与尝试连接的主机匹配。
    • AUTO:如果实例支持,则启用 TLS 加密。如果实例不支持 TLS,则禁用。

例如:

mysql-js> myreplicaset = dba.createReplicaSet("replicaSet1", { "replicationSslMode": "VERIFY_IDENTITY", "memberAuthType":"CERT_SUBJECT", "certIssuer":"/CN=MyCertAuthority", "certSubject": "/CN=mysql-5.local"});