错误1777(HY000):分区memsqldb:0没有主实例

时间:2015-09-17 10:58:13

标签: memsql

我正在使用memsql的社区版。我今天运行查询时遇到此错误。所以我刚刚重启我的集群并解决了这个错误。

memsql-ops cluster-restart

但是发生了什么,以后我该怎么办才能避免这个错误?

注意

我不想购买企业版。

问题

这是可用性问题吗?

4 个答案:

答案 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;命令返回了以下内容。

enter image description here

所以我采用的方法是删除每种情况(角色为从属或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;之后的结果。

enter image description here

如果上述步骤似乎不能解决您的问题,您可以参考有关分区的MemSQL文档here

答案 3 :(得分:0)

我遇到了同样的问题。在主节点上使用以下命令解决了该问题:

REBALANCE PARTITIONS ON db_name

您也可以使用FORCE强制使用它:

REBALANCE PARTITIONS ON db_name FORCE

要查看要执行重新平衡时的操作列表,请在EXPLAIN上使用上述命令:

 EXPLAIN REBALANCE PARTITIONS ON db_name [FORCE]