MySQL集群错误1114(HY000):表'users'已满

我有一个MySQL集群设置,有2个数据节点和1个管理节点 . 我们现在在进行插入时会在数据节点上出错 .

ERROR 1114(HY000):表'用户'已满

请任何帮助,这是一个配置问题,如果是这样的节点?每个节点都是Ubuntu 9服务器 .

回答(4)

3 years ago

答案在这里:http://dev.mysql.com/doc/refman/5.0/en/faqs-mysql-cluster.html#qandaitem-B-10-1-13

简而言之:ndb引擎将所有数据保存在RAM中 . 如果您的节点有1GB RAM并且您尝试加载4GB数据库,那么(几乎)运气不好 .

有一种方法可以配置ndb使用磁盘来存储数据,这样RAM只用于存储索引(它们仍然必须存储在RAM中),方法如下:http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data-objects.html

但是,如果你这样做,你将获得更低的表现 .

3 years ago

为了防止有人经过这个问题,这个问题的根本原因是 MaxNoOfConcurrentOperations 的值,应该相应地提高该表预期保持的行数 .

以下应该是此问题的解决方案 .

  • 更改表初始创建的CREATE TABLE,使MAX_ROWS值包含此表预期保留的行数的两倍 .

  • MaxNoOfConcurrentOperationsMaxNoOfConcurrentTransactions 的值增加到高于群集中最大表的值 . 这可能是因为MySQL Cluster在大型表上应用任何操作时并行处理所有行 .

3 years ago

检查 innodb_data_file_path 设置 - 此错误表明您已超出该键中定义的可用空间 . 检查this link以重新定义InnoDB的空间 .

或者,您可能只是在存储数据的分区上耗尽了磁盘空间 .

3 years ago

当我只加载DB表的结构时,我遇到了同样的错误 . 这意味着 DataMemoryIndexMemory 在这里没有帮助 . 表格的数量也未达到 MaxNoOfTables 的限制,因此也不是问题 . 这里的解决方案是增加 MaxNoOfOrderedIndexesMaxNoOfUniqueHashIndexes 的值,它们反映了群集中可以拥有的最大索引数 . 因此,如果数据库中有许多索引,请尝试相应地增加这些变量 . 当然,必须在更改生效后进行[滚动重启] [1]才能生效!

我希望这可以帮助别人!