memsql-deploy 叶节点始终失败
memsql-deploy leaf node consistently failed
在与 master 相同的主机上到 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
部署主节点后添加叶节点的直接步骤如下:
# 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
错误消息背后的可能原因是什么?我可以按照什么方式找出根本原因或修复?
能不能试一下师傅:
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
在Google上搜索了一天,我相信我终于找到了这个错误的根本原因。我觉得奇怪为什么之前没有人问过,因为它应该比我更经常发生。
这个问题的真正原因是我在非 NUMA 机器上按照 MemSQL 的最佳实践建议安装了 numactl
包。这将有效地让第一个节点以外的 memsql 节点尝试 运行 numactl
子命令 set_mempolicy
到 将各个 MemSQL 节点绑定到 CPU 但是这个命令最终会失败。而从memsql-ops
开始的子命令memsql-start
或memsql-deploy
都将失败。
解决方法非常简单,只需删除 包numactl
。那么一切都会好起来的。此解决方法特别适用于某些基于虚拟化的 memsql 部署,例如 Docker。
在与 master 相同的主机上到 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
部署主节点后添加叶节点的直接步骤如下:
# 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
错误消息背后的可能原因是什么?我可以按照什么方式找出根本原因或修复?
能不能试一下师傅:
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
在Google上搜索了一天,我相信我终于找到了这个错误的根本原因。我觉得奇怪为什么之前没有人问过,因为它应该比我更经常发生。
这个问题的真正原因是我在非 NUMA 机器上按照 MemSQL 的最佳实践建议安装了 numactl
包。这将有效地让第一个节点以外的 memsql 节点尝试 运行 numactl
子命令 set_mempolicy
到 将各个 MemSQL 节点绑定到 CPU 但是这个命令最终会失败。而从memsql-ops
开始的子命令memsql-start
或memsql-deploy
都将失败。
解决方法非常简单,只需删除 包numactl
。那么一切都会好起来的。此解决方法特别适用于某些基于虚拟化的 memsql 部署,例如 Docker。