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