mysql ndb 关闭_Mysql NDB 常见问题
在安裝和使用mysql cluster集群的過程中,遇到了很多問題,現(xiàn)在把那些問題列出來,并復上解決方法,希望大家在以后的使用中能少花時間少走彎路
1、導入數(shù)據(jù)的時候遇到如下報錯:
ERROR 1005 (HY000) at line 25: Can't create table 'tuge.pangolin_fnc_accountverification' (errno: 140)
Error | 1296 | Got error 738 'Record too big' from NDB
分析原因:表但行數(shù)據(jù)太大
解決辦法:需要更改表結構,使最大單行數(shù)據(jù)的大小小于8KB!
2、導入大量數(shù)據(jù)的時候遇到如下報錯
Error 1297: Got temporary error 'REDO' log overloaded.
ERROR : Got temporary error 1204 'Temporary failure, distribution changed' from NDBCLUSTER
ERROR : Got temporary error 1234 'REDO log files overloaded (increase disk hardware)' from NDBCLUSTER
分析原因:遇到這個錯誤,是表示redo log用完了,需要增加
解決辦法:修改config.ini文件,更改或添加如下參數(shù):
FragmentLogFileSize=256M
NoOfFragmentLogFiles=16
NoOfFragmentLogFiles這個參數(shù)可以更改到更大,但是初始化的時候會慢一點
3、在導入大量數(shù)據(jù)的時候,出現(xiàn)如下報錯:
ERROR 1114 (HY000) at line 54: The table 'gps_led_sendadverthistory' is full
分析原因:你分配的內存或者硬盤空間已經用完(如果你采用磁盤表的話),需要通過ndb管理節(jié)點客戶端和登錄mysql查看具體的原因,通過ndb_mgm登錄,執(zhí)行命令:
All report memory看下分配的內存是否使用完,如果采用磁盤表的,還需要登錄mysqld節(jié)點,然后執(zhí)行如下查詢,來確定是否是磁盤不足:
SELECT TABLESPACE_NAME, FILE_NAME, EXTENT_SIZE*TOTAL_EXTENTS/1024/1024 AS TOTAL_MB, EXTENT_SIZE*FREE_EXTENTS/1024/1024 AS FREE_MB, EXTRA FROM information_schema.FILES WHERE FILE_TYPE="DATAFILE";
解決辦法:如果是數(shù)據(jù)內存不足的情況,直接更改文件config.ini中[NDBD DEFAULT]下的
DataMemory=11480M
IndexMemory=1024M
根據(jù)實際情況加大
如果是采用磁盤表,磁盤文件空間不足的情況,就需要添加磁盤文件,格式如下:
ALTER TABLESPACE ts_1
ADD DATAFILE 'data_4.dat'
INITIAL_SIZE 10240M
ENGINE NDBCLUSTER;
4、在還原的時候遇到如下報錯:
Configuration error: Error : Could not alloc node id at 192.168.100.223 port 1186: Id 12 configured as ndbd(NDB), connect attempted as mysqld(API).
Unable to connect to management server.
分析原因:因為還原的時候會去連接mysqld,而在配置ndb的時候沒有添加空的mysqld節(jié)點,因此出現(xiàn)這個報錯
解決辦法:在config.ini添加幾個空的mysqld節(jié)點,語法如下:
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]
5、導入大量數(shù)據(jù)的時候或者執(zhí)行大量的insert或者update操作的時候,經常會出現(xiàn)如下報錯:
ERROR 1297 (HY000) at line 1: Got temporary error 1218 'Send Buffers overloaded in NDB kernel' from NDBCLUSTER
這個報錯的原因有幾個,第一、是參數(shù)SendBufferMemory設置過小,第二、和mysqld的二進制日志有關系,第三、和網絡環(huán)境有關系
解決辦法:查看網絡環(huán)境是否OK,是否出現(xiàn)雙工模式部隊,是否都是千兆網或者百兆網,加大SendBufferMemory的設置,一般2M就夠了,設置TotalSendBufferMemory = 256M,最后如果還是出現(xiàn)如此報錯,建議關閉mysql的二進制日志,在my.cnf中注釋掉相關的參數(shù)就可以了,比如:
#log-bin=mysql-bin
6、錯誤日志
Status: Temporary error, restart node
Message: System error, node killed during node restart by other node (Internal error, programming error or missing error message, please report a bug)
Error: 2303
Error data: Node 12 killed this node because GCP stop was detected
Error object: NDBCNTR (Line: 273) 0x00000006
分析原因:這個問題是因為undo日志文件空間用完了!
解決辦法:增加undo日志空間文件,語法如下:
ALTER LOGFILE GROUP lg_1
ADD UNDOFILE 'undo_2.log'
INITIAL_SIZE 2048M
ENGINE NDBCLUSTER;
7、還原的時候出現(xiàn)如下報錯:
Temporary error: 266: Time-out in NDB, probably caused by deadlock
分析原因:出現(xiàn)這個問題是鎖定超過1.2s
解決辦法:在config.ini中加入:TransactionDeadLockDetectionTimeOut=10000默認是1200
8、創(chuàng)建日志文件組的時候,出現(xiàn)如下報錯:
Error CODE : 1528 Failed TO CREATE LOGFILE GROUP
用SHOW WARNINGS;查看詳細報錯如下:
Got error 1504 'Out of logbuffer memory' FROM NDB
Failed TO CREATE LOGFILE GROUP
分析原因:是因為SharedGlobalMemory的值比UNDO_BUFFER_SIZE小導致錯誤
解決辦法:把SharedGlobalMemory調大,原來我的UNDO_BUFFER_SIZE為128,但是我的SharedGlobalMemory為80,將SharedGlobalMemory設置成384M解決問題。
--文檔來自于百度文庫。
總結
以上是生活随笔為你收集整理的mysql ndb 关闭_Mysql NDB 常见问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动软代码生成器连接oracle数据库
- 下一篇: 【收集】常用的cmd命令