PDF (US Ltr) - 2.3Mb
PDF (A4) - 2.3Mb
作为从头创建副本集的替代方法,您可以使用 dba.createReplicaSet()
中的 adoptFromAR
选项来采用现有的复制设置。将扫描复制设置,如果它与 InnoDB 副本集限制 兼容,AdminAPI 将创建必要的元数据。一旦采用了复制设置,您就只能使用 AdminAPI 来管理 InnoDB 副本集。
要将现有的复制设置转换为 InnoDB 副本集,请连接到主服务器(也称为源服务器)。将自动扫描和验证复制拓扑,从连接的 MySQL Shell 实例的全局会话开始。在采用过程中会检查所有实例的配置,以确保它们与 InnoDB 副本集的使用兼容。
所有复制通道必须处于活动状态,并且它们的通过 GTID 集验证的事务集必须一致。
假定实例具有相同的状态或能够收敛。
注意
所有新的复制通道都将在启用 SSL 的情况下创建。但对于使用 MySQL Shell 8.0.32 采用的复制组,情况并非如此。它们的复制通道保持未加密状态。
将自动扫描和验证复制拓扑,从 MySQL Shell 的全局会话连接到的实例开始。此操作对已采用副本集的唯一更改是创建元数据架构。现有的复制通道在采用过程中不会更改,但您可以在后续主服务器切换操作期间更改它们。
例如,要将由 example1
和 example2
上的 MySQL 服务器实例组成的复制拓扑采用到 InnoDB 副本集。
连接到 example1
上的主服务器并发出
mysql-js> rs = dba.createReplicaSet('testadopt', {'adoptFromAR':1})
A new replicaset with the topology visible from 'example1:3306' will be created.
* Scanning replication topology...
** Scanning state of instance example1:3306
** Scanning state of instance example2:3306
* Discovering async replication topology starting with example1:3306
Discovered topology:
- example1:3306: uuid=00371d66-3c45-11ea-804b-080027337932 read_only=no
- example2:3306: uuid=59e4f26e-3c3c-11ea-8b65-080027337932 read_only=no
- replicates from example1:3306
source="localhost:3310" channel= status=ON receiver=ON applier=ON
* Checking configuration of discovered instances...
This instance reports its own address as example1:3306
example1:3306: Instance configuration is suitable.
This instance reports its own address as example2:3306
example2:3306: Instance configuration is suitable.
* Checking discovered replication topology...
example1:3306 detected as the PRIMARY.
Replication state of example2:3306 is OK.
Validations completed successfully.
* Updating metadata...
ReplicaSet object successfully created for example1:3306.
Use rs.addInstance() to add more asynchronously replicated instances to
this replicaset and rs.status() to check its status.
一旦采用了 InnoDB 副本集,您就可以像使用创建的副本集一样使用它。
警告
从这时起,您必须仅使用 AdminAPI 来管理 InnoDB 副本集。