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

Ivá*_* Jf 7 mysql drbd

我有一个包含两个节点的 HA 集群,节点 1 是主节点,节点 2 是镜像。我的 mysql 资源有问题,因为我的节点未同步

drbd 概述

节点主体:
0:home 连接的主/辅助 UpToDate/UpToDate C r-----
1:存储连接的辅助/主 UpToDate/UpToDate C r-----
2:mysql 独立辅助/未知 UpToDate/过时 r-- ---

辅助节点:
0:home 连接的辅助/主 UpToDate/UpToDate C r-----
1:存储连接的主/辅助 UpToDate/UpToDate C r-----
2:mysql StandAlone 主/未知 UpToDate/Outdated 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
Run Code Online (Sandbox Code Playgroud)

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

Bar*_*958 6

问题是您遇到了“著名的”DRBD 脑裂状况,并且两个 DRBD 节点都进入 \xe2\x80\x9cStandAlone\xe2\x80\x9d 状态。很难说你的主节点上是否有有效的或损坏的数据库,但现在你有两种途径可供选择:

\n
    \n
  1. 尝试重新同步 DRBD 节点,将其中一个节点分配为具有更新版本的数据,但您的情况不需要这样做。
  2. \n
\n

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

\n
#drbdadm secondary resource \n#drbdadm disconnect resource\n#drbdadm -- --discard-my-data connect resource\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
#drbdadm connect resource\n
Run Code Online (Sandbox Code Playgroud)\n

如果它不会\xe2\x80\x99 没有帮助,你可以丢弃第二个节点并模仿自动重建,执行以下命令:

\n
#drbdadm invalidate resource\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 使用 (1) 中的最后一个命令清除两个节点数据,并从备份中恢复数据库。
  2. \n
\n

希望这有帮助!

\n

PS 我真的建议在生产中避免使用 DRBD。不幸的是,你所看到的是很常见的事情。

\n

  • 是的,这是 DRBD 中的裂脑,日志中可能有以下消息:“内核:阻止 drbd0:检测到裂脑,断开连接!” (尽管并不总是检测到)。路线1值得一试。仅举一个示例来说明:https://www.suse.com/support/kb/doc/?id=000019009。你是对的,DRBD 因这个问题而闻名。为了避免这种情况,可以将 Quorum 与第三个节点一起使用,或者选择在 2 个节点上正常工作的东西,例如 StarWind vSAN。 (5认同)

Ivá*_* Jf 1

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

\n
drbdadm down resource    \ndrbdadm wipe-md resource    \ndrbdadm create-md resource    \ndrbdadm up resource    \ndrbdadm disconnect resource    \ndrbdadm connect resource\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

最后,执行#cat/proc/drbd 并执行 sincronizaci\xc3\xb3n 的安全。

\n