当前位置:萝卜系统 > 网络技术教程 > 详细页面

如何将MySQL路由器与群集InnoDB一起使用以完成高可用性

如何将MySQL路由器与群集InnoDB一起使用以完成高可用性

更新时间:2023-08-19 文章作者:未知 信息来源:网络 阅读次数:

网络故障(network failure)是指由于硬件的问题、软件的漏洞、病毒的侵入等引起网络无法提供正常服务或降低服务质量的状态。

本节介绍如何将MySQL路由器与InnoDB群集一起使用以实现高可用性。无论您是否部署了沙箱集群或生产集群,MySQL路由器都可以使用--bootstrap选项根据InnoDB集群的元数据进行自我配置。这将自动配置MySQL路由器,以将连接路由到群集的服务器实例。客户端应用程序连接到MySQL路由器提供的端口,而无需了解InnoDB集群拓扑。万一发生意内安装,请发送:

shell> mysqlrouter&

如果使用--directory选项将MySQL Router安装到目录中,请使用start.sh安装目录中的脚本。或者,将服务设置为在系统启动时自动启动MySQL Router,请参阅启动MySQL Router。您现在可以如上所述将MySQL客户端(例如MySQL Shell)连接到传入的MySQL路由器端口之一,并查看客户端如何透明地连接到InnoDB集群实例之一。

shell> mysqlsh --uri root @ localhost:6442

要验证您实际连接的实例,只需对端口状态变量执行SQL查询。

mysql-js> \ sql

切换到SQL模式...命令以;结尾

mysql-sql>选择@@ port;

+ -------- +

| @@ port |

+ -------- +

| 3310 |

+ -------- +

测试高可用性

要测试高可用性是否有效,请通过杀死实例来模拟意外停止。群集检测到实例已离开群集并重新配置自身的事实。群集本身实际如何重新配置??取决于您使用的是单主机群集还是多主机群集,以及实例在群集中扮演的角色。

凤凰传世登陆器配置器_登陆器配置器_路由器的配置文件

在单个主模式下:

如果当前主节点离开群集,则将选择一个辅助实例作为新的主实例,其优先级最低的是server_uuid。 MySQL Router将读写连接重定向到新选择的主。

如果当前辅助节点离开群集,则MySQL Router将停止将只读连接重定向到该实例。

有关更多信息,请参阅第1节8. 1. 3. 1“单主机模式”。

在多主要模式下:

如果当前的“ R / W”实例离开集群,则MySQL路由器会将读取和写入连接重定向到其他主。如果其余实例是群集中的最后一个主实例,则群集已完全消失,您将无法连接到任何MySQL路由器端口。

有关更多信息,请参见第1 8. 1. 3. 2节“多主模式”。

有许多方法可以模拟离开群集的实例。例如,您可以在dba.killSandboxInstance()测试沙箱部署时,强制停止实例上的MySQL服务器,或使用AdminAPI。在此示例中,假设有一个包含三个服务器实例的单一主沙箱群集部署,并且侦听端口3310的实例是当前主实例。模拟实例意外离开集群:

mysql-js> dba.killSandboxInstance(331 0)

集群检测到更改并自动选择一个新的主。假设您的会话已连接到默认的经典经典MySQL协议端口6446,则MySQL路由器应检测到群集拓扑更改并将会话重定向到新选择的主服务器。要验证这一点,请使用以下\ sql命令在MySQL Shell中切换到SQL模式,然后选择实例的端口变量以检查会话已重定向到哪个实例。请注意,第一个SELECT语句失败,因为与原始主的连接已丢失。这意味着当前会话已关闭,MySQL Shell将自动为您重新连接,并且当您再次发出命令时,将确认新端口。

mysql-js> \ sql

切换到SQL模式...命令以;结尾

mysql-sql> SELECT @@ port;

错误:2013(HY00 0):查询期间与MySQL服务器的连接丢失

全局会话断开连接。

尝试重新连接到'root @ localhost:6446'...

全局会话已成功重新连接。

mysql-sql> SELECT @@ port;

+ -------- +

| @@ port |

+ -------- +

| 3330 |

+ -------- +

已设置1行(0. 00秒)

在此示例中,端口3330的实例已被选择为新的主实例。这表明InnoDB集群为我们提供了自动故障转移,MySQL Router已自动将我们重新连接到新的主实例,并且我们具有高可用性。

MySQL路由器和元数据服务器

当MySQL Router为集群启动时,它将在其配置文件中记录服务器实例的地址。如果在启动MySQL路由器后将任何其他实例添加到群集中,它们将不会被自动检测到,因此不会用于连接路由。

为确保正确路由新添加的实例,必须为群集启动MySQL路由器以读取更新的元数据。这意味着您必须重新启动MySQL Router并包括--bootstrap选项。

使用群集路由器

您可以针对一个集群或副本集启动多个MySQL Router实例。从8. 0. 19版本开始,要显示所有已注册的MySQL路由器实例的列表,请发出:

Cluster.listRouters()

结果提供有关每个已注册的MySQL路由器实例的信息,例如元数据中的名称,主机名,端口等。例如,发出:

mysql-js> Cluster.listRouters()

{

“ clusterName”:“示例”,

“路由器”:{

“ ic-1:3306”:{

“主机名”:“ ic-1:3306”,


本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/tongxingongju/article-377454-1.html


当今,越来越多的业务应用运行于网络架构之上,保障网络的持续、高效、安全的运行,成为网络管理者面临的巨大挑战。

温馨提示:喜欢本站的话,请收藏一下本站!

本类教程下载

系统下载排行

网站地图xml | 网站地图html