6.3.2部署InnoDB Replicaset

InnoDB replicasset的部署方式与InnoDB Cluster类似。首先配置一些MySQL服务器实例,最少是两个实例,请参阅第6.1节,“MySQL AdminAPI”。在本教程中,其中一个函数是主函数1,76,645;在本教程中,其他实例是次要的rs-2;它复制主服务器应用的事务。这相当于异步MySQL复制的源和副本。然后使用MySQL Shell连接到其中一个实例,并创建一个replicasset。一旦创建了replicasset,您就可以向它添加实例。

InnoDB ReplicaSet与沙箱实例兼容,可以用于本地部署,例如用于测试目的。看到部署沙箱实例有关说明。但是,本教程假定您正在部署生产InnoDB replicaset,其中每个实例在不同的主机上运行。

InnoDB ReplicaSet先决条件

使用InnoDB replicasset需要注意以下先决条件:

  • 仅支持MySQL 8.0及以上版本的实例

  • 仅支持基于GTID的复制,二进制日志文件位置复制与InnoDB ReplicaseT不兼容

  • 支持基于行的复制(RBR),基于语句的复制(SBR)不受支持

  • 不支持复制筛选器

  • 任何实例都不允许在非托管复制频道

  • 一个ReplicaSet最多由一个主实例组成,支持一个或多个从实例。尽管可以添加到replicasset的辅助服务器的数量没有限制,但是每个连接到replicasset的MySQL路由器必须监视每个实例。因此,添加到replicasset的实例越多,需要进行的监视就越多。

  • 复制品必须由MySQL Shell完全管理。例如,Replication帐户由MySQL Shell创建和管理。使配置更改为MySQL Shell之外的实例,例如使用直接使用SQL语句来更改主文件,不受支持。始终使用MySQL Shell与InnoDB Replicaset一起使用。

AdminAPI和InnoDB replicasset使您无需深入理解底层概念就可以使用MySQL复制。但是,要了解背景信息,请参阅复制

配置InnoDB replicasset实例

使用dba.configurigureerplicaseTinstance(实例)配置要在复制集中使用的每个实例。MySQL Shell可以连接到一个实例,然后配置它,或者你可以传入实例配置特定远程实例。要在复制品中使用实例,必须支持持久的设置。看到持久的设置

当您连接到实例以执行管理任务时,您需要一个具有适当特权的用户。创建用户来管理replicasset的首选方法是使用setupadminaccount()操作。看到为管理创建用户帐户。或者,dba.configureReplicaSetInstance ()操作可以选择创建管理员帐户,如果是clusteradmin.提供选项。使用“管理InnoDB Replicaset”所需的正确一组权限创建该帐户。

提示

同一个集群或复制集的所有实例中,管理员帐户必须具有相同的用户名和密码。

将实例配置到RS-1:3306,群集管理员命名RSADMIN.问题:

mysql-js > dba。configureReplicaSetInstance (root@rs-1:3306, {clusterAdmin:“‘rsadmin @ rs - 1%”});

交互式提示符请求指定用户所需的密码。要配置MySQL Shell当前连接到的实例,您可以指定一个空实例定义。例如问题:

mysql-js > dba。configureReplicaSetInstance (", {clusterAdmin:“‘rsadmin @ rs - 1%”});

交互式提示符请求指定用户所需的密码。这会检查当前连接的MySQL Shell的实例有效,适用于InnoDB Replicaset。如果可能,配置与InnoDB Replicaset不兼容的设置。群集管理员帐户是使用innodb replicaset所需的权限创建的。

创建InnoDB Replicaset

配置了实例后,连接到实例并使用dba.createReplicaSet ()要创建使用MySQL异步复制的托管复制品,而InnoDB群集使用的MySQL组复制相反。MySQL Shell当前连接的MySQL实例用作刷新率的初始主机。

dba.createReplicaSet ()操作执行多个检查,以确保实例状态和配置与受管复制品兼容,如果是,则在实例上初始化元数据模式。如果要检查操作但实际上没有对实例进行任何更改,请使用Dryrun.选择。这将检查并显示MySQL Shell将采取哪些操作来创建replicasset。如果复制集创建成功,则a . 1ReplicaSet对象返回。因此,为返回返回是最好的做法ReplicaSet一个变量。这使您能够使用replicasset,例如通过调用ReplicaSet.status ()操作。创建名为例子在实例上1,76,645并将其分配给rs变量,问题:

MySQL-JS> \ Connect Root @ RS-1:3306 ... MySQL-JS> var rs = dba.createreplicaset(“示例”)将创建一个具有实例“RS-1:3306”的新蜂蜜功能。*在RS-1:3306检查MySQL实例此实例将其自己的地址报告为RS-1:3306 RS-1:3306:实例配置是合适的。*更新元数据...为RS-1:3306成功创建的Reporicaset对象。使用rs.add_instance()以向此replicaset和rs.status()添加更异步复制的实例以检查其状态。

要验证操作是否成功,您可以使用返回ReplicaSet对象。例如,它提供ReplicaSet.status ()操作,显示有关复制品的信息。我们已经分配了返回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"}}

这个输出显示了replicasset的名称例子已创建,主节点是1,76,645。目前只有一个实例,下一个任务是向replicasset添加更多实例。