微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MySQL-Cluster 启动失败

如何解决MySQL-Cluster 启动失败

这不是我第一次创建 ndb 集群,但我没有遇到过这样的问题。

我正在关注 team MysqLApps Script at Stack Overflow

我使用的是认配置 this manual

当我启动 ndb_mgmd 容器时,它返回以下错误

$ docker run -d --net=cluster --name=management1 --ip=192.168.0.2 MysqL/MysqL-cluster ndb_mgmd

我收到的日志是:

$ docker logs management1

它返回以下几行

[Entrypoint] MysqL Docker Image 8.0.24-1.2.2-cluster
[Entrypoint] Starting ndb_mgmd
Failed to open /sys/devices/system/cpu/cpu0/cache/index3/shared_cpu_list: No such file or directory
ndb_mgmd: [ERROR] unkNown variable 'user='.
MysqL Cluster Management Server mysql-8.0.24 ndb-8.0.24

并且容器立即退出。我不确定它是否是一个错误,因此我用 SO 写了它。

解决方法

这是一个错误。

我运行普通的 echo 并且 --user= 被 docker 图像附加到命令行。

$ docker run  -d --net=cluster --name=management1 --ip=192.168.0.2 mysql/mysql-cluster echo
55b11ea72989fad50b29fe199ad54ebe2a919079770d0188512a465699e8a256
$ docker logs management1
[Entrypoint] MySQL Docker Image 8.0.24-1.2.2-cluster
--user=

可能有一些解决方法可以启动 MySQL 服务器,但不适用于 Ndb 程序。

编辑#1:

在新的 docker 镜像修复完成之前,您可以尝试以下解决方法。

当使用 --entrypoint=/usr/bin/env 启动 ndb 进程时,它会覆盖错误的入口点脚本(注意,必须在图像 mysql/mysql-cluster 之前)。

并使用从 https://github.com/mysql/mysql-docker/blob/main/mysql-cluster/8.0/docker-entrypoint.sh 处的入口点脚本中提取的显式命令行选项。

对于管理服务器覆盖入口点并添加 -f /etc/mysql-cluster.cnf --nodaemon

$ docker run -d --net=cluster --name=management1 --ip=192.168.0.2 --entrypoint=/usr/bin/env mysql/mysql-cluster ndb_mgmd -f /etc/mysql-cluster.cnf --nodaemon

两个数据节点(我选择 ndbmtd 而不是 ndbd)覆盖入口点并添加 --nodaemon

$ docker run -d --net=cluster --name=ndb1 --ip=192.168.0.3 --entrypoint=/usr/bin/env mysql/mysql-cluster ndbmtd --nodaemon

$ docker run -d --net=cluster --name=ndb2 --ip=192.168.0.4 --entrypoint=/usr/bin/env mysql/mysql-cluster ndbmtd --nodaemon

启动 mysqld 时不应覆盖入口点,请遵守手册。

编辑#2:

mysql-cluster docker 镜像现已修复,拉取新镜像并重新创建容器。

$ docker pull mysql/mysql-cluster
Using default tag: latest
latest: Pulling from mysql/mysql-cluster
Digest: sha256:a8ae8a4358f0c2f07aa39df046eb81e8f88cb2bebcaaf436c67663b300a1e1fe
Status: Image is up to date for mysql/mysql-cluster:latest
docker.io/mysql/mysql-cluster:latest

$ docker run -d --net=cluster --name=management1 --ip=192.168.0.2 mysql/mysql-cluster ndb_mgmd
715ad773b51b3d8fefcf6230460b6149a0a0226ee604752352b9e88d8dfa5bb8

$ docker logs management1
[Entrypoint] MySQL Docker Image 8.0.25-1.2.3-cluster
[Entrypoint] Starting ndb_mgmd
MySQL Cluster Management Server mysql-8.0.25 ndb-8.0.25
2021-05-12 07:59:21 [MgmtSrvr] INFO     -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2021-05-12 07:59:21 [MgmtSrvr] INFO     -- Sucessfully created config directory
2021-05-12 07:59:21 [MgmtSrvr] WARNING  -- at line 19: [DB] IndexMemory is deprecated,will use Number bytes on each ndbd(DB) node allocated for storing indexes instead
2021-05-12 07:59:21 [MgmtSrvr] INFO     -- Got initial configuration from '/etc/mysql-cluster.cnf',will try to set it when all
ndb_mgmd(s) started
2021-05-12 07:59:21 [MgmtSrvr] INFO     -- Node 1: Node 1 Connected
2021-05-12 07:59:21 [MgmtSrvr] INFO     -- Id: 1,Command port: *:1186
==INITIAL==
2021-05-12 07:59:21 [MgmtSrvr] INFO     -- MySQL Cluster Management Server mysql-8.0.25 ndb-8.0.25 started
2021-05-12 07:59:22 [MgmtSrvr] INFO     -- Node 1 connected
2021-05-12 07:59:22 [MgmtSrvr] INFO     -- Starting initial configuration change
2021-05-12 07:59:22 [MgmtSrvr] INFO     -- Configuration 1 commited
2021-05-12 07:59:22 [MgmtSrvr] INFO     -- Config change completed! New generation: 1
==CONFIRMED==
,

这被证明是一个 bug。在修复之前,您可以执行以下操作:

1- 克隆 mysql-docker

git clone https://github.com/mysql/mysql-docker.git

2- 签出较早的标签(1.1.19-cluster 已检查和验证)

git checkout 1.1.19-cluster

3- 构建映像并稍后使用。

docker build -t mysql-cluster-customized 8.0/

4-运行管理集群

docker run -d --net=cluster --name=management1 --ip=192.168.0.2 -it  mysql-cluster-customized ndb_mgmd

我希望在 mysql 团队正在解决存储库负责人的问题时有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。