You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maxscale无法检测AWS Aurora 3/MySQL 8复制从节点问题求助

问题:MaxScale v23.02.04 无法识别Aurora 3/MySQL 8只读副本为Slave

我安装了MaxScale v23.02.04,能正常连接AWS RDS Aurora实例(引擎版本8.0.mysql_aurora.3.04.0),但配置readwritesplit实现读写分离时遇到问题:执行maxctrl list servers后,主节点显示为"Master, Running",但只读副本未被识别为"Slave",且GTID列无数据。

环境与权限信息

  • MaxScale连接用户maxscale的完整权限:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE ROLE, DROP ROLE ON *.* TO `maxscale`@`%` WITH GRANT OPTION

当前MaxScale配置文件maxscale.cnf

[maxscale]
threads=auto
log_info=true

[dev_master]
type=server
address=***.***.us-east-1.rds.amazonaws.com
port=3306
protocol=MariaDBBackend

[dev_reader]
type=server
address=***.***.us-east-1.rds.amazonaws.com
port=3306
protocol=MariaDBBackend

[MySQL-Monitor]
type=monitor
module=mysqlmon
servers=dev_master, dev_reader
user=maxscale
password=password
monitor_interval=2s

[Read-Write-Service]
type=service
router=readwritesplit
servers=dev_master, dev_reader
user=maxscale
password=password

[Read-Write-Listener]
type=listener
service=Read-Write-Service
protocol=MariaDBClient
port=3306

尝试过查找MaxScale AuroraDB Monitor文档,但运行时提示文件缺失,后发现auroradbmon已被弃用,怀疑是Aurora与MariaDB的兼容性问题。


适配Aurora 3/MySQL 8的解决方法

1. 配置mysqlmon适配Aurora复制机制

虽然auroradbmon已弃用,但可以通过自定义参数让mysqlmon适配Aurora的复制状态查询逻辑:
修改[MySQL-Monitor]节点,添加Aurora专属检测配置:

[MySQL-Monitor]
type=monitor
module=mysqlmon
servers=dev_master, dev_reader
user=maxscale
password=password
monitor_interval=2s
# 关闭标准复制延迟检测,改用Aurora专属逻辑
detect_replication_lag=false
# 绑定Aurora状态检测脚本(需确保脚本存在,核心逻辑为查询Aurora专属状态变量)
script=/usr/share/maxscale/filters/aurora_monitor_check.py

脚本核心逻辑参考:通过SHOW GLOBAL STATUS LIKE 'aurora_server_id';识别主节点,SHOW GLOBAL STATUS LIKE 'aurora_replica_lag_in_milliseconds';判断副本状态。

2. 替换服务器协议为MySQLBackend

Aurora基于MySQL生态,使用MariaDBBackend协议可能存在兼容性差异,修改两个服务器节点的协议配置:

[dev_master]
type=server
address=***.***.us-east-1.rds.amazonaws.com
port=3306
protocol=MySQLBackend

[dev_reader]
type=server
address=***.***.us-east-1.rds.amazonaws.com
port=3306
protocol=MySQLBackend

3. 优化readwritesplit路由参数

在[Read-Write-Service]中添加适配Aurora的路由配置:

[Read-Write-Service]
type=service
router=readwritesplit
servers=dev_master, dev_reader
user=maxscale
password=password
# 适配Aurora无GTID复制场景
use_sql_variables_in=master
strict_multi_stmt=true

4. 重启验证

执行命令重启MaxScale:

systemctl restart maxscale

再通过maxctrl list servers检查节点状态,确认只读副本是否被标记为"Slave",GTID列数据是否正常填充。


内容的提问来源于stack exchange,提问作者Brian Phelan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 22:23:17