transwarp-manager-db 启动失败的一些案例和解决方法

内容纲要

概要描述


对于 TDH 5.x 及其以上版本集群,Manager 使用 Mariadb 数据库来存储后台数据,称为 transwarp-manager-db。在某些情况下,启动或重启 Manager 时启动不了,在 Manager 未开启高可用时,究其原因是 transwarp-manager-db 启动失败。本文旨在收录一些常见的 transwarp-manager-db 启动失败案例,以供故障排查参考。

详细说明

  1. 目录权限不对
  2. DNS 域名解析错误
  3. 依赖文件损坏
  4. mariadb 数据库冲突或者损坏

1. 日志目录权限不对

现象:

transwarp-manager 启动失败,控制台能看到 [FAILED] start database failed!提示让查看 /var/log/transwarp-manager/master/mysql/transwarp-manager-db.log,可以明显看出是因为 transwarp-manager-db 启动失败了。该问题在 TDH5.2.4 版本常见。

file

排查:

  • 执行 /etc/init.d/transwarp-manager-db restart 手动启动 manager-db, 报错和重启 manager 时错误一致
  • 执行 systemctl status transwarp-manager-db 查看状态,可以发现 “Failed to start LSB:start and stop Transwarp Manager database server”
    file
  • 查看 /var/log/transwarp-manager/master/mysql/transwarp-manager-db.log 内容,没有最新的异常信息,stat /var/log/transwarp-manager/master/mysql/transwarp-manager-db.log 查看文件的 mtime,ctime 也都不是当前最新时间
  • 执行 /usr/bin/mysqld_safe --defaults-file=/etc/transwarp-manager/master/my.cnf 或者是 /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/transwarp-manager/master/my.cnf 报错“can’t create/write to file ‘/var/log/transwarp-manager/master/mysql/transwarp-manager-db.log’ (Errcode: 13)”
    file
  • 执行 ll /var/log/transwarp-manager/,发现目录 /var/log/transwarp-manager/master 权限为 700
    file
  • 再次执行 su mysql -s /bin/bash -c 'more /var/log/transwarp-manager/master/mysql/transwarp-manager-db.log' 可以确认 mysql 用户确实不能查看日志内容(Permission denied),更何况写

解决:
既然找到了是日志目录权限的问题,那么就很好解决了。直接执行如下命令启动 Manager。

$ chmod 755 /var/log/transwarp-manager/master && /etc/init.d/transwarp-manager restart


2. 报错 hostname 不能被查到

现象1:
transwarp-manager 启动失败,控制台能看到 [FAILED] start database failed!执行 /etc/init.d/transwarp-manager-db restart 报错如:

--
Neither host 'tdh1' nor 'localhost' could be looked up with
'/usr/sbin/resolveip'
Please configure the 'hostname' command to return a correct
hostname.
--

file

现象2:
查看 /var/log/transwarp-manager/master/mysql/transwarp-manager-db.log
发现报错 [ERROR] Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist

排查:
该问题基本是出现在新装 TDH 集群时。

  • 首先确认执行 hostname 命令输出的主机名,和 /etc/hosts 里配置的保持一致
  • 如果服务器配置了 DNS 域名解析,确认 /etc/resolv.conf 里配置的 DNS 服务器能正常解析域名
  • 分别执行 ping localhostping $(hostname) 看 ip 信息对不对,网络是否正常

解决:
如果以上有信息不正确,请先解决相关的问题,如果以上信息都正确,请执行如下命令来初始化数据库和启动 manager。

$ /usr/bin/mysql_install_db --user=mysql --defaults-file=/etc/transwarp-manager/master/my.cnf --datadir=/var/lib/transwarp-manager/master/data/mysql --force
$ /etc/init.d/transwarp-manager restart


3. 报错 /usr/share/mysql/english/errmsg.sys 有 incompatible header

现象:
transwarp-manager 启动不了,root cause 还是 transwarp-manager-db 启动失败,/var/log/transwarp-manager/master/mysql/transwarp-manager-db.log 中可以看到如下报错:

--
incompatible header in messagefile '/usr/share/mysql/english/errmsg.sys'. Probably from another version of MariaDB
--

解决:
该问题从报错来看就是 errmsg.sys 文件不是当前 transwarp-manager-db 版本的,版本不匹配。
可以备份当前文件,从相同版本的正常集群通过二进制拷贝一份过来,确保权限啥的和原来的一致,然后再重启 manager。

$ /etc/init.d/transwarp-manager restart


4. 数据库被覆盖或者损坏

表现就是 Manager 启动失败,mysqld_safe 文件不存在;

此时大概率是安装了其他 mysql,覆盖了 mariadb;

使用 rpm -qa |grep mysql 确认一下 mysql 是否符合 Manager 要求。如果不符合要求,则需要卸载原来的,然后安装 /var/lib/transwarp-manager/master/pub/os/Packages 目录下的 Mariadb 包。

附录:故障排查整体思路

file

这篇文章对您有帮助吗?

平均评分 5 / 5. 次数: 2

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。