9.3 创建InnoDB副本集

2024年 3月 12日 58.6k 0

配置实例 后 ,通过完成以下步骤创建 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"});

笔记

从 MySQL Shell 8.0.32 开始,所有新的复制通道都是在启用 SSL 的情况下创建的。对于 MySQL Shell 8.0.32 采用的复制组而言,情况并非如此。它们的复制通道保持未加密状态。

InnoDB ReplicaSet 复制允许主机

使用 MySQL Shell 8.0.28 及更高版本创建 InnoDB ReplicaSet 时,如果您有安全需求,希望 AdminAPI 自动创建的所有帐户都具有严格的身份验证要求,则可以为 replicationAllowedHostReplicaSet 的配置选项设置一个值。MySQL replicationAllowedHost Shell 选项允许您将 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.

replicationAllowedHostInnoDB ReplicaSet 在创建后可以进行修改,以通过 配置选项 设置变量setOption,方法是发出:

mysql-js> rs.setOption('replicationAllowedHost', '192.0.2.0/24')

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论