MySQLRouter与组复制和MySQLShell高度整合,只有将其与组复制和MySQLShell共同使用,才能够称为InnoDBCluster。
一、配置MySQLRouter :
在启动MySQLRouter时,如果用户配置了引导启动选项,则系统可以为InnoDBCluster自动配置路由。
引导过程是运行路由器的一种特殊方式,它不按照通常的方法启动路由器,而是基于元数据的配置文件mysqlrouter.conf。当用户在命令行中启动路由器时,需要指定--bootstrap选项,它会从元数据中检索拓扑信息,并配置通往MySQL实例的路由连接。
在Windows上,用户可以使用MySQLInstaller来配置启动路由器。在路由器启动后,客户端应用程序会连接到它发布的端口,路由器根据传入的端口自动将客户端连接重定向到实例。例如,端口默认用于使用经典MySQL协议的读写连接。
如果组复制的拓扑发生变化(例如,由于一个实例的意外故障,路由器检测到变化),则系统会自动调整路由,将数据流量连接到其余的实例上。客户端应用程序无须处理故障转移或了解底层拓扑的信息。
InnoDBCluster使用路由器需要如下两个步骤:
1.创建用于路由器获取InnoDBCluster元数据的MySQL账户。
执行语句如下:
2.部署路由器,执行mysqlrouter--bootstraproot
localhost:--force--user=root命令。注意,如果用户之前为该实例配置过路由,则可以通过指定force选项强制引导启动。
执行语句如下:
接上图上面的内容是引导启动路由器时输出的信息,信息提示,MySQL经典协议使用端口和端口,X协议使用0端口和0端口,每种协议使用的两个端口分别用于读写和只读。
在引导启动之后,用户可以按照输出信息的提示,以系统服务的方式启动路由器,这里仅做演示用。因此,直接在命令行启动mysqlrouter。
执行语句如下:
路由器已经成功启动。现在,使用MySQLShell连接路由器进行验证。
执行语句如下:
用户可以通过连接本机的端口连接到MySQL实例,执行select
port;语句,结果显示实际的端口为MySQL实例的端口。因此,路由器已经成功地为InnoDBCluster进行了路由,将数据流量路由到对应的MySQL实例上。二、AdminAPI与MySQLRouter :
在一个运行的集群中,AdminAPI可以引导多个路由器。用户可以使用Cluster.listRouters()方法显示所有注册的路由器列表。
执行语句如下:
返回的信息包括如下内容。
1.路由器的名称。
2.上次接入的时间戳,由路由器存储在元数据中的周期性回显信息产生。
3.MySQL经典协议连接的只读和读写端口。
4.ySQLX协议连接的只读和读写端口。
5.路由器的版本。
内容摘自《MySQL高可用解决方案――从主从复制到InnoDBCluster架构》第八章
徐轶韬著
本书特点:
本书对MySQL官方提供的高可用解决方案逐一进行介绍,详细阐述每种方案的原理、架构、优缺点以及适用场景,并配合演示说明,能够帮助读者快速理解相关内容。区别于市面上其他MySQL相关图书,本书专注于MySQL官方团队提供的解决方案。此外,本书还介绍了MySQL8.0的部分内容,使读者能够更加全面地了解MySQL的生态和工具。
本书适合:
MySQL初学者;
数据库架构师;
DBA(DatabaseAdministrator数据库管理员);
相关软件开发人员;
组织内部IT负责人。