我正在使用memsql的社区版。我今天运行查询时遇到此错误。所以我刚刚重启我的集群并解决了这个错误。
memsql-ops cluster-restart
但是发生了什么,以后我该怎么办才能避免这个错误?
注意
我不想购买企业版。
问题
这是可用性问题吗?
答案 0 :(得分:3)
我在尝试演出时遇到了这个错误。
VM有24个CPU和25个节点:1个Master Agg,24个Leaf节点 将VM减少到4个CPU并重新启动群集。
所有的叶子都没有恢复。 除了4以外的所有人都在< 5分钟。 20分钟后,仍然没有连接4个叶子节点。
从MySQL / MemSQL提示符:
use db;
show partitions;
我注意到一些0到71序号的分区对我来说是空的而不是主机,端口,为给定分区定义的角色。
在memsql ops UI http://server:9000>设置>配置>手动群集控制我检查了“启用手动控制”,而我试图运行各种命令而没有任何实际好处。
然后15分钟后,我取消选中该框,Memsql-ops尝试再次附加所有叶节点,最终成功。
也许群集重启会做同样的事情。
答案 1 :(得分:2)
发生这种情况是因为群集中的叶子由于某种原因(丢失网络连接,硬件故障,操作系统问题,计算机过载,内存不足等)而导致运行状况检查心跳失败,并且其分区不再可访问查询。 MemSQL Community Edition仅支持冗余1,因此集群中失败的叶节点上没有其他数据副本(因此错过了丢失数据分区的错误 - MemSQL无法完成需要读取任何分区上的数据的查询在问题叶子上。)
鉴于重新启动修复的东西,最可能的答案是linux“内存不足”杀了你:MemSQL Linux OOM killer docs
您还可以检查发生问题的叶子上的tracelog,看看是否有任何关于发生了什么的线索(通常在/var/lib/memsql/leaf_3306/tracelogs/memsql.log)
- 亚当
答案 2 :(得分:2)
我也曾经遇到过这个错误,那是因为某些奴隶序没有相应的主人。我的错误消息如下:
ERROR 1772 (HY000) at line 1: Leaf Error (10.0.0.112:3306): Partition database `<db_name>_0` can't be promoted to master because it is provisioning replication
我的memsql> SHOW PARTITIONS;
命令返回了以下内容。
所以我采用的方法是删除每种情况(角色为从属或NULL)。
DROP PARTITION <db_name>:4 ON "10.0.0.193":3306;
..
DROP PARTITION <db_name>:46 ON "10.0.0.193":3306;
然后使用每个删除的分区创建一个新分区。
CREATE PARTITION <db_name>:4 ON "10.0.0.193":3306;
..
CREATE PARTITION <db_name>:46 ON "10.0.0.193":3306;
这是memsql> SHOW PARTITIONS;
之后的结果。
如果上述步骤似乎不能解决您的问题,您可以参考有关分区的MemSQL文档here。
答案 3 :(得分:0)
我遇到了同样的问题。在主节点上使用以下命令解决了该问题:
REBALANCE PARTITIONS ON db_name
您也可以使用FORCE
强制使用它:
REBALANCE PARTITIONS ON db_name FORCE
要查看要执行重新平衡时的操作列表,请在EXPLAIN
上使用上述命令:
EXPLAIN REBALANCE PARTITIONS ON db_name [FORCE]