MySQL 路由器 9.0  /  部署 MySQL 路由器  /  基本连接路由

3.3 基本连接路由

连接路由 插件执行基于连接的路由,这意味着它在不检查数据包的情况下将数据包转发到服务器。这是一种提供高吞吐量的简单方法。有关连接路由的更多一般信息,请参阅 第 1.3 节,“连接路由”

下面显示了一个简单的基于连接的路由设置。这些选项和其他选项记录在 第 4.3.3 节,“配置文件选项” 中。

[logger]
level = INFO

[routing:secondary]
bind_address = localhost
bind_port = 7001
destinations = foo.example.org:3306,bar.example.org:3306,baz.example.org:3306
routing_strategy = round-robin

[routing:primary]
bind_address = localhost
bind_port = 7002
destinations = foo.example.org:3306,bar.example.org:3306
routing_strategy = first-available

在这里,我们使用连接路由,根据 轮询 routing_strategy 的定义,将 MySQL 连接轮询到端口 7001 上的三个 MySQL 服务器。此示例还使用端口 7002 为其中两个服务器配置了 首选可用 策略。首选可用策略使用目标列表中第一个可用的服务器。分配给每个 destinations 的 MySQL 实例数量由您决定,因为这只是一个示例。路由器不会检查数据包,也不会根据路由策略限制连接,因此由应用程序决定将读取和写入请求发送到哪里,在我们的示例中是端口 7001 或 7002。

假设所有三个 MySQL 实例都在运行,接下来通过传入配置文件来启动 MySQL 路由器

$> ./bin/mysqlrouter -config=/etc/mysqlrouter-config.conf

现在,MySQL 路由器正在侦听端口 7001 和 7002,并将请求发送到相应的 MySQL 实例。例如

$> ./bin/mysql --user=root --port 7001 --protocol=TCP

这将首先连接到 foo.example.org,然后是 bar.example.org,然后是 baz.example.org,第四次调用将返回到 foo.example.org。相反,我们将端口 7002 的行为配置为不同

$> ./bin/mysql --user=root --port 7002 --protocol=TCP

这将首先连接到 foo.example.org,并且其他请求将继续连接到 foo.example.org,直到出现故障,此时将使用 bar.example.org。有关此行为的更多信息,请参阅 routing_strategy