连接路由 插件执行基于连接的路由,这意味着它将数据包转发到服务器而不进行检查。这是一种简单的方法,可提供高吞吐量。有关连接路由的更多一般信息,请参见 第 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
在这里,我们使用连接路由将 MySQL 连接循环到三个运行在端口 7001 上的 MySQL 服务器,如 round-robin routing_strategy
所定义。此示例还使用 first-available 策略为两个运行在端口 7002 上的服务器配置。first-available 策略使用目标列表中的第一个可用服务器。分配给每个 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
。