Maxscale:结合readwritesplit和schemarouter

时间:2017-02-10 15:38:19

标签: mariadb sharding maxscale

我正在尝试设置maxscale以使用schemarouter和readwritesplit。 我的mysql数据库有很多分片。每个碎片都有一个奴隶 因此,我们的想法是在主服务器上使用一个模式路由器,在从服务器上使用一个模式路由器来代理所有分片。然后在readwritesplit中使用这两个服务。

This cause the following issue:
2017-02-10 14:57:48   error  : Failure loading users data from backend [10.161.66.145:4009] for service [Splitter Service]. MySQL error 2013, Lost connection to MySQL server at 'handshake: waiting for inital communication packet', system error: 110
2017-02-10 14:57:52   error  : Failure loading users data from backend [10.161.66.145:4008] for service [Splitter Service]. MySQL error 2013, Lost connection to MySQL server at 'reading authorization packet', system error: 110
2017-02-10 14:57:52   error  : Unable to get user data from backend database for service [Splitter Service]. Failed to connect to any of the backend databases.

任何帮助都会很好。

我的架构路由器都运行良好。 这是readwritesplit配置:

[max_ro]
type=server
address=10.10.10.10
port=4009
protocol=MySQLBackend

[max_rw]
type=server
address=10.10.10.10
port=4008
protocol=MySQLBackend

[Splitter Service]
type=service
router=readwritesplit
servers=max_ro,max_rw
user=maxscale
passwd=maxscale

[Splitter Listener]
type=listener
service=Splitter Service
protocol=MySQLClient
port=4010

由于

1 个答案:

答案 0 :(得分:0)

错误很可能是因为readwritesplit服务尚未启动。在MariaDB Jira上有关于此行为的错误报告。

如果分片服务正常工作,并且MaxScale启动后不会记录更多错误,那么一切都按预期工作,并且可以忽略错误,如this bug report中所述。

解决此问题的另一种方法是将配置分成两部分并使用单独的MaxScale实例;一个用于分片服务,另一个用于读写分割服务。这确实增加了一层额外的复杂性,因为需要启动两个服务而不是一个。