在与memsql-deploy
叶节点的主节点相同的主机上,始终以相同的错误失败。将操作切换到新机器也有同样的失败。
以下是部署主角色的步骤:
# memsql-ops memsql-deploy -a Af53bfb -r master -P 3306 --community-edition
2017-03-24 16:15:54: Je5725b [INFO] Deploying MemSQL to 172.17.0.3:3306
2017-03-24 16:15:59: Je5725b [INFO] Installing MemSQL
2017-03-24 16:16:02: Je5725b [INFO] Finishing MemSQL Install
Waiting for MemSQL to start...
MemSQL successfully started
以下是部署master后添加叶节点的直接步骤:
# memsql-ops memsql-deploy -a Af53bfb -r leaf -P 3308
2017-03-24 16:16:43: J32c71f [INFO] Deploying MemSQL to 172.17.0.3:3308
2017-03-24 16:16:43: J32c71f [INFO] Installing MemSQL
2017-03-24 16:16:46: J32c71f [INFO] Finishing MemSQL Install
Waiting for MemSQL to start...
MemSQL failed to start: Failed to start MemSQL:
set_mempolicy: Operation not permitted
setting membind: Operation not permitted
错误消息背后可能的原因是什么,以及我可以通过哪些方式找出根本原因或修复?
答案 0 :(得分:0)
你能试试主人吗?
memsql-ops start
memsql-ops memsql-deploy --role master -P 3306 --community-edition
代理人:
memsql-ops start
memsql-ops follow -h <host of primary agent> -P <port of primary agent if configured to use one>
memsql-ops memsql-deploy --role leaf -P 3308 --community-edition
答案 1 :(得分:0)
在Google上搜索了一天后,我相信我终于找到了此错误的根本原因。我觉得奇怪为什么之前没有人问过,因为它应该比我更频繁地发生。
此问题的真正原因是我在非NUMA计算机上根据MemSQL的最佳实践建议安装了numactl
个包。这将有效地让除第一个之外的memsql节点尝试运行numactl
子命令set_mempolicy
到 将各个MemSQL节点绑定到CPU 但是这个命令最终会失败。来自memsql-start
的子命令memsql-deploy
或memsql-ops
的节点开始都会失败。
解决方法非常简单,只需删除包numactl
即可。那一切都会好的。此解决方法特别适用于某些基于虚拟化的memsql部署,如 Docker 。