我有一个MySQL集群设置,有2个数据节点和1个管理节点。我们现在在进行插入时会在数据节点上出错。
ERROR 1114(HY000):表'用户'已满
请任何帮助,这是一个配置问题,如果是这样的节点?每个节点都是Ubuntu 9服务器。
答案 0 :(得分:5)
答案在这里: 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
但是,如果你这样做,你将获得更低的表现。
答案 1 :(得分:3)
以防万一有人经过这个问题,这个问题的根本原因是MaxNoOfConcurrentOperations
的值,应该根据表预期保留的行数相应地提高。{/ p >
以下内容应该是解决此问题的方法。
更改表初始创建的CREATE TABLE,使MAX_ROWS值包含此表预期保留的行数的两倍。
将MaxNoOfConcurrentOperations
和MaxNoOfConcurrentTransactions
的值增加到高于群集中最大表的值。这可能是因为MySQL Cluster在大型表上应用任何操作时并行处理所有行。
答案 2 :(得分:2)
检查innodb_data_file_path
设置 - 此错误表示您已超出该密钥中定义的可用空间。检查this link是否重新定义了InnoDB的空间。
或者,您可能只是存储了数据的分区上的磁盘空间不足。
答案 3 :(得分:1)
当我只加载数据库表时,我遇到了同样的错误。结构体。这意味着DataMemory
或IndexMemory
在这里没有帮助。
表格的数量也没有达到MaxNoOfTables
的限制,所以这也不是问题。
这里的解决方案是增加MaxNoOfOrderedIndexes
和MaxNoOfUniqueHashIndexes
的值,它们反映了群集中可以拥有的最大索引数。因此,如果数据库中有许多索引,请尝试相应地增加这些变量。
当然,必须在更改后[滚动重启] [1]才能生效!
我希望这可以帮助别人!