未配置 DRBD 群集节点(独立)

未配置 DRBD 群集节点(独立)

我有一个包含两个节点的 HA 集群,节点 1 是主节点,节点 2 是其镜像。由于我的节点不同步,我的 mysql 资源出现问题

drbd 概述

节点主体:
0:home 已连接 主/次 最新/最新 C r-----
1:storage 已连接 次/主 最新/最新 C r-----
2:mysql 独立 次/未知 最新/过时 r-----

次要节点:
0:home 已连接 次要/主要 最新/最新 C r-----
1:storage 已连接 主/次要 最新/最新 C r-----
2:mysql 独立 主/未知 最新/过时 r-----

查看消息文件我发现以下内容

Apr-19 18:20:36 clsstd2 kernel: block drbd2:self C1480E287A8CAFAB:C7B94724E2658B94:5CAE57DEB3EDC4EE:F5887A918B55FB1A bits:114390101 flags:0
Apr-19 18:20:36 clsstd2 kernel: block drbd2:peer 719D326BDE8272E2:0000000000000000:C7BA4724E2658B94:C7B94724E2658B95 bits:0 flags:1 
                                                         
Apr-19 18:20:36 clsstd2 kernel: block drbd2:uuid_compare()=-1000 by rule 100                           
Apr-19 18:20:37 clsstd2 kernel: block drbd2:Unrelated data, aborting!
Apr-19 18:20:37 clsstd2 kernel: block drbd2:conn (WFReportParams -> Disconnecting)
Apr-19 18:20:37 clsstd2 kernel: block drbd2:error receiving ReportState, l: 4!
Apr-19 18:20:38 clsstd2 kernel: block drbd2:asender terminated
Apr-19 18:20:38 clsstd2 kernel: block drbd2:Terminating asender thread
Apr-19 18:20:38 clsstd2 kernel: block drbd2:Connection closed
Apr-19 18:20:38 clsstd2 kernel: block drbd2:conn (Disconnecting -> StandAlone)
Apr-19 18:20:39 clsstd2 kernel: block drbd2:reciver terminated
Apr-19 18:20:39 clsstd2 kernel: block drbd2:Terminating reciver thread
Apr-19 18:20:39 clsstd2 auditd[3960]: Audit daemon rotating log files

我不明白问题是什么以及如何解决它,因为检查两个节点后我意识到在 var/lib/mysql 目录中我没有节点 2 中的 ibdata1 文件,但它确实存在于节点 1 中

答案1

问题是您遇到了“著名”的 DRBD 裂脑情况,并且两个 DRBD 节点都进入了“独立”状态。很难说您的主节点上的数据库是有效的还是损坏的,但目前您有两种选择:

  1. 尝试重新同步 DRBD 节点,并指定其中一个节点具有较新版本的数据,但对于您的情况来说这不是必需的。

这是在第二个节点上运行的:

#drbdadm secondary resource 
#drbdadm disconnect resource
#drbdadm -- --discard-my-data connect resource

这是你在活动节点上运行的,你认为该节点拥有最新版本的数据:

#drbdadm connect resource

如果这没有帮助,您可以丢弃第二个节点并模拟自动重建执行以下命令:

#drbdadm invalidate resource
  1. 使用(1)中的最后一条命令清除两个节点的数据并从备份中恢复数据库。

希望这有帮助!

PS 我强烈建议在生产中避免使用 DRBD。不幸的是,您看到的是相当常见的情况。

答案2

此处的问题就是Unrelated data, aborting!您在日志中看到的内容。很可能节点在断开连接时已经多次更改角色,以至于元数据中标识的历史代数不再匹配。有关更多信息,请参阅此处的 DRBD 用户指南:https://linbit.com/drbd-user-guide/drbd-guide-9_0-en/#s-gi

此时,您需要选择一个节点来覆盖另一个节点的数据并执行新的完全同步。为此,您应该在要成为的节点上重新创建元数据SyncTarget。您可以使用drbdadm create-md <resource>

答案3

谢谢,确实,解决方案是再次创建元数据,在我想要重新创建元数据的节点上运行以下命令,现在一切都再次同步。

drbdadm down resource    
drbdadm wipe-md resource    
drbdadm create-md resource    
drbdadm up resource    
drbdadm disconnect resource    
drbdadm connect resource

最后一个命令首先在重新创建元数据的节点上执行,然后在另一个节点上执行。

最后,执行命令#cat/proc/drbd 并检查备份副本数。

相关内容