MySQL-cluster 表引擎从InnoDB修改为ndbcluster时的一系列问题

MySQL-cluster 表引擎从InnoDB修改为ndbcluster时的一系列问题

以下为本人在将非集群MySQL数据库导入MySQL-cluster后,并将各个表引擎改为ndbcluster时所遇到的问题:

1.ERROR 1118 (42000): ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs。

错误原因:该错误原因为每行数据太大了,你必须将其中某些属性类型改为text或者brobs之类的类型。

解决方法:将该表中部分属性类型改为text或者brobs,直至不再提示此错误。

2.Mysql:The table‘xxxx’is full

错误原因:DataMemory或IndexMemory可能使用完,大多数为DataMemory使用完导致。

解决方法:修改/var/lib/mysql-cluster/config.ini配置文件如下,并重启MySQL集群服务

vim /var/lib/mysql-cluster/config.ini
[ndbd default]
NoOfReplicas=2
DataMemory=5G   #此参数默认为80M,修改为5G
IndexMemory=512M    #此参数默认为16M,修改为512M
MaxNoOfTables=1024

3.MySQL-cluster集群修改配置,关闭重启服务流程(注意ndbd不要加–initial)

请参考链接:https://blog.csdn.net/henu_xiaohei/article/details/83315446
参考链接:https://blog.csdn.net/Jeeper_/article/details/50459119

4.MySQL Cluster导入数据表时报错:Got error 708 ‘No more attribute metadata records (increase MaxNoOfAttributes)’ from NDBCLUSTER

错误原因:MaxNoOfAttributes 表示 MySQL Cluster集群中,所有数据表的字段总数能达到的上限。该错误是因为所有数据表字段总数超过上限。

解决方法:修改/var/lib/mysql-cluster/config.ini配置文件,修改 MGM节点配置,把 [ndbd]中的 “MaxNoOfAttributes=1000”改成 “MaxNoOfAttributes=5000000”:

vim /var/lib/mysql-cluster/config.ini
[ndbd default]
NoOfReplicas = 2
DataMemory = 5G
IndexMemory = 512M
datadir = /usr/local/mysql/data

MaxNoOfTables = 1024
MaxNoOfAttributes = 5000000
MaxNoOfOrderedIndexes = 10000

重启MySQL集群服务(注意ndbd不要加–initial)
参考链接:https://www.cnblogs.com/52php/p/5675402.html?utm_source=itdadao&utm_medium=referral

5.ERROR 1031 Table storage engine for ‘department’ doesn’t have this option

错误原因:个人理解为,MySQL-cluster 表引擎为ndbcluster时单个表对最大属性个数有限制,且这个值与表引擎为InnoDB时不一样。如果你的表中属性类型均为varchar,则最大个数为18个(个人测试,不代表官方)。

解决方法:如果你遇到MySQL error 1118,将表中部分varchar改为text,此时error 1118解决;然后你可能遇到error1031,说明你的表中varchar个数还是太多,可以尝试继续将varchar减少,改为text(本人是这样解决掉这个问题的,不代表官方)。

6.MySQL Cluster 配置文件(config.ini)详解

请参考链接:http://www.cnblogs.com/52php/p/5675373.html

7.在现有集群上添加新数据节点后,新数据节点始终起不来

在这里插入图片描述
错误原因:由图可知,由于内存不够用,该进程被9信号(即 kill -9)强制终止。
解决办法:将/var/lib/mysql-cluster/config.ini配置文件中的参数适当调小。参数值设置过大导致预分配占用过多,所以新节点添加时无法进行更多分配导致内存不够用,从而报错。

MaxNoOfTables = 1024
MaxNoOfAttributes = 500000
MaxNoOfOrderedIndexes = 10000

发个东西给你看一下,是关于ndb内存计算的,有很多参数都需要分配内存的:
ndb大致内存计算
MaxNoOfAttributes200B+MaxNoOfTables20K+MaxNoOfOrderedIndexes10K+MaxNoOfUniqueHashIndexes15K+MaxNoOfConcurrentOperations1K
+TransactionBufferMemory+IndexMemory+DataMemory+UndoIndexBuffer+UndoDataBuffer+RedoBuffer+LongMessageBuffer+DiskPageBufferMemory
+SharedGlobalMemory+BackupMemory+4node
(SendBuffer+ReceiveBuffer)+ndbd binary size.
参考链接:http://bbs.chinaunix.net/thread-3619164-1-1.html

你可能感兴趣的:(个人总结)