MariaDB服务器在关闭后未作为从服务器重新加入

apeeds0o  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(124)

我测试了几个故障切换案例,这是我最初的设置

maxctrl list servers
┌─────────┬────────────────┬──────┬─────────────┬─────────────────┬────────────┐
│ Server  │ Address        │ Port │ Connections │ State           │ GTID       │
├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────────┤
│ server1 │ XXX.XXX.XX.XXX │ 3306 │ 0           │ Slave, Running  │ 0-1-853336 │
├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────────┤
│ server2 │ XXX.XXX.XX.XXX │ 3306 │ 0           │ Master, Running │ 0-1-853336 │
├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────────┤
│ server3 │ XXX.XXX.XX.XXX │ 3306 │ 0           │ Slave, Running  │ 0-1-853336 │
├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────────┤
│ server4 │ XXX.XXX.XX.XXX │ 3307 │ 0           │ Slave, Running  │ 0-1-853336 │
└─────────┴────────────────┴──────┴─────────────┴─────────────────┴────────────┘

我关闭了主服务器(服务器2)和从服务器(服务器1),然后手动重新启动它们,因此这就变成了设置-

maxctrl list servers
┌─────────┬────────────────┬──────┬─────────────┬─────────────────┬────────────┐
│ Server  │ Address        │ Port │ Connections │ State           │ GTID       │
├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────────┤
│ server1 │ XXX.XXX.XX.XXX │ 3306 │ 0           │ Running         │ 0-1-853336 │
├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────────┤
│ server2 │ XXX.XXX.XX.XXX │ 3306 │ 0           │ Running         │ 0-1-853336 │
├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────────┤
│ server3 │ XXX.XXX.XX.XXX │ 3306 │ 0           │ Master, Running │ 0-1-853336 │
├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────────┤
│ server4 │ XXX.XXX.XX.XXX │ 3307 │ 0           │ Slave, Running  │ 0-1-853336 │
└─────────┴────────────────┴──────┴─────────────┴─────────────────┴────────────┘

现在,由于auto_failover=trueauto_rejoin=true,server 1和server 2应该作为从服务器重新加入,但它们继续显示为正在运行状态。我甚至尝试使用命令maxctrl call command mariadbmon rejoin DatabaseMonitor server1手动重新加入它们,但它显示此错误-

Error: Server at 127.0.0.1:8989 responded with status code 403 to `POST maxscale/modules/mariadbmon/rejoin?DatabaseMonitor&server1`:{
    "errors": [
        {
            "detail": "'server1' cannot replicate from master server 'server3': gtid_current_pos of 'server1' (0-1-853336) is incompatible with gtid_binlog_pos of 'server3' (0-200-3)."
        }
    ]

我确信我错过了一些关于GTID复制的东西,但是我不明白为什么。有人能告诉我发生了什么或者如何修复这个问题吗?谢谢。

hc2pp10m

hc2pp10m1#

确保在所有数据库节点上启用了log_slave_updates:这是故障转移和切换工作所必需的,因为二进制日志事件必须在所有节点上可用。
这也可能与描述类似情况的this bug report有关:如果在从一个节点到另一个节点的故障转移之间没有发生新的事务,则重新加入的节点无法加入,因为新主服务器的gtid_binlog_pos与旧主服务器的gtid_current_pos不兼容,正如错误消息所描述的那样。
如果您在新的主服务器上运行创建binlog事件(例如FLUSH LOGS)的命令,则在此之后重新加入应该可以工作。

相关问题