9.3 创建InnoDB副本集
配置实例 后 ,通过完成以下步骤创建 InnoDB ReplicaSet:
-
连接到实例并用于
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.
-
使用返回的
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"});