Maxscale使用router_options = master(slave / master replication)写入slave,并且侦听器已停止

时间:2016-11-28 11:57:50

标签: mariadb database-replication maxscale

我已在2台服务器上配置(srv50 / 51), 其中一个是师父,第二个是奴隶,

这是配置文件/etc/maxscale.cnf的配置:

[Read-Only Service]
type=service
router=readconnroute
servers=server50, server51
user=YYYYYYYYYYYYY
passwd=XXXXXXXXXXXXXX
router_options=slave

[Write-Only Service]
type=service
router=readconnroute
servers=server50, server51
user=YYYYYYYYYYYYY
passwd=XXXXXXXXXXXXXX
router_options=master

[Read-Only Listener]
type=listener
service=Read-Only Service
protocol=MySQLClient
port=4008

[Write-Only Listener]
type=listener
service=Write-Only Service
protocol=MySQLClient
port=4009

当我在下面工具时,router_options看看谁是主人并将写作查询发送给主人

Maxscale(通过maxadmin)似乎发现了2个服务并且理解女巫一个是主人:

MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server51           | 192.168.0.51    |  3306 |           0 | Slave, Running
server50           | 192.168.0.50    |  3306 |           0 | Master, Running
-------------------+-----------------+-------+-------------+--------------------

但即使我在我的Maxscale只写侦听器端口(4009)上本地连接Mysql,Listener处于Stopped模式,这是正常的吗?

MaxScale> list listeners
Listeners.
---------------------+--------------------+-----------------+-------+--------
Service Name         | Protocol Module    | Address         | Port  | State
---------------------+--------------------+-----------------+-------+--------
Read-Only Service    | MySQLClient        | *               |  4008 | Stopped
Write-Only Service   | MySQLClient        | *               |  4009 | Stopped
MaxAdmin Service     | maxscaled          | *               |  6603 | Running
---------------------+--------------------+-----------------+-------+--------

我尝试在srv51(slave)中创建一个数据库,它只在srv51上创建,而不是在srv50中创建。

我的配置有问题吗?这很奇怪,因为它不是我的第一个集群,而在其他集群上,所有写入都发送到主集群(但​​是侦听器正在运行)。我不明白" router_options = master" ?如何启动听众?我倾向于将51保留在写入列表中以检测拓扑更改

=====更新=====

观看日志文件/var/log/maxscale/maxscale1.log后 我发现我的监视器用户没有正确的密码:

[MySQL Monitor]
type=monitor
module=mysqlmon
servers=server50, server51
user=MONITOR
passwd=MONITOR_PASS
monitor_interval=10000

我更正了用户的密码并重新启动了maxscale,现在一切正在运行:

MaxScale> list listeners
Listeners.
---------------------+--------------------+-----------------+-------+--------
Service Name         | Protocol Module    | Address         | Port  | State
---------------------+--------------------+-----------------+-------+--------
Read-Only Service    | MySQLClient        | *               |  4008 | Running
Write-Only Service   | MySQLClient        | *               |  4009 | Running
MaxAdmin Service     | maxscaled          | *               |  6603 | Running
---------------------+--------------------+-----------------+-------+--------

但写入查询仍在Slave上完成,而不是在Master

上完成

2 个答案:

答案 0 :(得分:0)

感谢MariaDb的支持,我试图像这样连接:

mysql -h localhost --port=4009 -u USER -p

但Maxscale& Mysql安装在同一台服务器上,即使Mysql绑定端口3306,当你指定' localhost'时,连接是在Mysql端口3306上完成而不是在Maxscale端口4009上,端口是忽略!!

解决方案是这样连接:

mysql -h 127.0.0.1 --port=4009 -u USER -p

或者像这样:

mysql -h localhost --protocol=tcp --port=4009 -u USER -p

我尝试了两种解决方案并且有效。

关于侦听器未运行的解决方案是更新问题。

答案 1 :(得分:0)

如果在从站上进行了写操作,最简单的解释是您在错误的端口上执行写操作或配置错误。要诊断这些问题,请在log_info=true部分下添加[maxscale]来启用信息日志级别。

如果启用信息日志并检查日志文件没有提供任何线索,我建议您在Maxscale Jira上打开错误报告。