我有一个MySQL群集设置,有2个数据节点和1个管理节点。现在,在执行插入时,我们正在遇到数据节点的错误。

错误1114(HY000):表“用户”已满

请感谢任何帮助,这是一个配置问题,如果是的,哪个节点?每个节点是Ubuntu 9服务器。

有帮助吗?

解决方案

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

简而言之:NDB Engine将所有数据保存在RAM中。如果您的节点有1GB RAM,并且您正在尝试加载一个4GB数据库(几乎)是出于运气。

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

但是,如果这样做,您的表现将降低。

其他提示

以防万一有人通过此问题,此问题的根本原因是 MaxNoOfConcurrentOperations, ,应与该表格的行相应地提出。

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

  1. 更改表初始创建的创建表以包含MAX_ROWS值为两倍的行数,该表将保留该表。

  2. 增加价值 MaxNoOfConcurrentOperationsMaxNoOfConcurrentTransactions 值高于集群中最大的表。这可能是因为MySQL群集在大桌子上应用任何操作时并行在所有行上工作。

检查 innodb_data_file_path 设置 - 此错误表明您超出了该密钥中定义的可用空间。查看 这个链接 用于重新定义InnoDB的空间。

另外,您可能只能在存储数据上的分区上用完磁盘空间。

当我只加载DB表的结构时,我遇到了相同的错误。意思是 DataMemory 或者 IndexMemory 这里没有帮助。同样,桌子的数量未达到限制 MaxNoOfTables 因此,这也不是问题。我这里的解决方案是增加 MaxNoOfOrderedIndexesMaxNoOfUniqueHashIndexes 这反映了您可以在集群中拥有的最大索引数。因此,如果您的数据库中有许多索引,请尝试相应地增加这些变量。当然,在更改后必须完成[滚动重新启动] [1]!

我希望这可以帮助某人!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top