当前位置:首页 > 技术 > 正文内容

Galera集群启动常见故障排查与修复指南

访客 技术 2026年5月26日 4

故障一:WSREP: failed to open gcomm backend connection: 131(无效UUID)

错误信息示例:

WSREP: failed to open gcomm backend connection: 131: invalid UUID

解决方案:

进入该节点的数据库目录(如 /var/lib/mysql/),找到 gvwstate.dat 文件并将其重命名或移除(如 mv gvwstate.dat gvwstate.dat.bak)。之后重新启动 MariaDB 即可。

故障二:bind: Address already in use(地址被占用)

错误信息示例:

bind: Address already in use

解决方案:

使用命令 ps -ef | grep mysql 查看 MySQL 进程,然后强制终止相关进程(如 kill -9 [PID]),再尝试启动 MariaDB。

故障三:It may not be safe to bootstrap the cluster from this node(该节点不安全,无法引导集群)

错误信息示例:

[ERROR] WSREP: It may not be safe to bootstrap the cluster from this node. It was not the last one to leave the cluster and may not contain all the updates. To force cluster bootstrap with this node, edit the grastate.dat file manually and set safe_to_bootstrap to 1 .

问题说明:

该节点并非最后一个离开集群的节点,可能未包含完整数据更新。若强制从此节点引导,需手动修改 grastate.dat 文件中的 safe_to_bootstrap 参数为 1

解决方案:

首先检查每个节点的 /var/lib/mysql/grastate.dat 文件,找到 safe_to_bootstrap=1 的节点,然后在该节点上执行启动命令。若所有节点均出现类似错误,需要手动选取一个主节点,修改其 grastate.dat 文件:

vim /var/lib/mysql/grastate.dat
# 将 safe_to_bootstrap = 0 改为 safe_to_bootstrap = 1

然后在主节点执行:

service mysql start --wsrep-new-cluster

其他节点正常启动:

service mysql start

故障四:[ERROR] WSREP: failed to open gcomm backend connection: 110(连接超时)

错误信息示例:

[ERROR] WSREP: failed to open gcomm backend connection: 110

现象描述:

集群三个节点均无法启动,日志中报连接超时。检查发现 gvwstate.dat 不存在,所有节点的 grastate.datseqno 值均为 -1,且缺少 safe_to_bootstrap 参数。

原因分析:

  • 正常关闭数据库时,gvwstate.dat 不会生成;若三个节点同时关闭且无数据变化,seqno 应相等且不为 -1。
  • 若节点先后启动不当,所有节点会不断重启,seqno 会由原值变为 -1。
  • 此时无法选举出主启动节点,需要在第一个节点手动指定为集群主节点启动。

解决方案:

方法一:在主节点使用 --wsrep-new-cluster 参数启动:

service mysql start --wsrep-new-cluster

其他节点正常启动:

service mysql start

方法二:清除所有节点的缓存文件和锁文件后重启:

rm -rf /var/lock/subsys/mysql
cd /var/lib/mysql
rm -rf galera.cache
rm -rf grastate.dat

第一个节点启动:

service mysql start --wsrep-new-cluster

其他节点正常启动:

service mysql start

故障五:MySQL Unknown/unsupported storage engine: INNODB(未知或不支持的存储引擎)

解决方案:

删除数据库目录下的以下文件:

rm -f /var/lib/mysql/ib_logfile0
rm -f /var/lib/mysql/ib_logfile1
rm -f /var/lib/mysql/ibdata1

然后重新启动 MariaDB 服务。

故障六:[ERROR] mysqld: Table './mysql/user' is marked as crashed and should be repaired(表崩溃,需要修复)

错误信息示例:

[ERROR] mysqld: Table './mysql/user' is marked as crashed and should be repaired

问题说明:

异常断电等原因可能导致单节点无法启动,并提示某张表(如 mysql.user)已损坏。

解决方案:

使用 myisamchk 工具修复损坏的表:

./myisamchk -c -r /var/lib/mysql/mysql/user.MYI
标签: Galera

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。