Maxscale 正在使用 router_options=master(slave/master 复制)在 slave 上写入并且听众停止
Maxscale is writing on slave with router_options=master (slave/master replication) and listeners stopped
我在 2 台服务器上进行了配置(srv50/51),
其中一个是Master,第二个是slave,
这里是我配置文件的配置/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
-------------------+-----------------+-------+-------------+--------------------
但是即使我在本地的 Mysql 连接到我的 Maxscale 只写侦听器端口 (4009),侦听器处于停止模式,这正常吗?
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(从属)中创建数据库,但它仅在 srv51 上创建,而不是在 srv50 中创建。
我的配置有问题吗?这很奇怪,因为它不是我的第一个集群,在其他集群上所有写入都转到 master(但听众是 运行)。 "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 上完成的
感谢 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
我已经尝试了两种解决方案,它们都有效。
关于listener not 运行的解决方法在问题的更新中。
如果写入是在从服务器上完成的,最简单的解释就是您在错误的端口上执行写入或您的配置有误。要诊断这些问题,请通过在 [maxscale]
部分下添加 log_info=true
来启用信息日志级别。
如果启用信息日志并检查日志文件没有提供任何线索,我建议在 Maxscale Jira.
上打开错误报告
我在 2 台服务器上进行了配置(srv50/51), 其中一个是Master,第二个是slave,
这里是我配置文件的配置/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
-------------------+-----------------+-------+-------------+--------------------
但是即使我在本地的 Mysql 连接到我的 Maxscale 只写侦听器端口 (4009),侦听器处于停止模式,这正常吗?
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(从属)中创建数据库,但它仅在 srv51 上创建,而不是在 srv50 中创建。
我的配置有问题吗?这很奇怪,因为它不是我的第一个集群,在其他集群上所有写入都转到 master(但听众是 运行)。 "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 上完成的
感谢 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
我已经尝试了两种解决方案,它们都有效。
关于listener not 运行的解决方法在问题的更新中。
如果写入是在从服务器上完成的,最简单的解释就是您在错误的端口上执行写入或您的配置有误。要诊断这些问题,请通过在 [maxscale]
部分下添加 log_info=true
来启用信息日志级别。
如果启用信息日志并检查日志文件没有提供任何线索,我建议在 Maxscale Jira.
上打开错误报告