MySQL Router 9.0  /  一般信息  /  集群元数据和状态

1.2 集群元数据和状态

MySQL Router 通过位于应用程序和 MySQL 服务器之间来工作。应用程序正常连接到 Router,就像它们连接到普通的 MySQL 服务器一样。每当应用程序连接到 Router 时,Router 都会从其已知的候选池中选择一个合适的 MySQL 服务器,然后连接到该服务器。从那时起,Router 会转发应用程序和 MySQL 之间的全部网络流量,包括来自 MySQL 的响应。

MySQL Router 保持在线 MySQL 服务器的缓存列表,或配置的 InnoDB 集群的拓扑结构和状态。最初,此列表在 Router 启动时从 Router 的配置文件中加载。此列表是在使用 --bootstrap 选项引导 Router 时使用 InnoDB 集群服务器生成的。

为了保持缓存的更新,元数据缓存组件会与包含元数据的 InnoDB 集群服务器之一保持打开的连接。它通过查询元数据数据库和 MySQL 的性能模式中的实时状态信息来实现。每当修改 InnoDB 集群时,例如使用 MySQL Shell 添加或删除 MySQL 服务器,集群元数据就会发生变化,并且每当检测到集群状态更改时,MySQL 服务器的组复制插件都会实时更新 performance_schema 表。

当 Router 检测到连接的 MySQL 服务器关闭时,例如因为元数据缓存已失去连接并且无法再次连接,它会尝试连接到其他 MySQL 服务器以从新 MySQL 服务器获取元数据和 InnoDB 集群状态。

注意

使用 MySQL Shell 删除集群元数据,例如 dba.dropMetadataSchema(),会导致 Router 删除所有当前连接并禁止新连接。这会导致完全中断。

连接到已关闭的 MySQL 服务器的应用程序连接会自动关闭。然后,它们必须重新连接到 Router,Router 会将其重定向到在线的 MySQL 服务器。