Maxscale:将readwritesplit和schemarouter结合起来
问题描述:
我试图设置maxscale以使用schemarouter和readwritesplit。 我有很多我的mysql数据库的碎片。每个分片都有一个从属节点 所以,想法是在主节点上使用一个模式路由器,在从节点上使用一个模式路由器来代理所有分片。然后在readwritesplit中使用这2个服务。Maxscale:将readwritesplit和schemarouter结合起来
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.
任何帮助将是不错的。
我的schemarouter都工作正常。 这里是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
感谢
答
这些错误是最有可能的是,readwritesplit服务尚未启动造成的事实。在MariaDB Jira上有关于此行为的错误报告。
如果分片服务工作并且一旦MaxScale启动后不再记录任何错误,则所有内容都按预期工作,错误可以忽略,如this bug report中所述。
解决此问题的另一种方法是将配置分为两部分并使用单独的MaxScale实例;一个用于分片服务,另一个用于读写分片服务。这确实增加了一层额外的复杂性,因为需要启动两个服务而不是一个服务。