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