Mysql cluster錯誤收集

一、  導入數據的時候遇到以下報錯:node

ERROR 1005 (HY000) at line 25: Can't create table 'tuge.pangolin_fnc_accountverification' (errno: 140)mysql

Error | 1296 | Got error 738 'Record too big' from NDB    sql

分析緣由:表但行數據太大vim

解決辦法:須要更改表結構,使最大單行數據的大小小於8KB!網絡

二、  導入大量數據的時候遇到以下報錯this

Error 1297: Got temporary error 'REDO' log overloaded.       spa

ERROR : Got temporary error 1204 'Temporary failure, distribution changed' from NDBCLUSTERrest

ERROR : Got temporary error 1234 'REDO log files overloaded (increase disk hardware)' from NDBCLUSTER日誌

分析緣由:遇到這個錯誤,是表示redo log用完了,須要增長orm

解決辦法:修改config.ini文件,更改或添加以下參數:

FragmentLogFileSize=256M

NoOfFragmentLogFiles=16

NoOfFragmentLogFiles這個參數能夠更改到更大,可是初始化的時候會慢一點

三、  在導入大量數據的時候,出現以下報錯:

ERROR 1114 (HY000) at line 54: The table 'gps_led_sendadverthistory' is full

分析緣由:你分配的內存或者硬盤空間已經用完(若是你採用磁盤表的話),須要經過ndb管理節點客戶端和登陸mysql查看具體的緣由,經過ndb_mgm登陸,執行命令:

All report memory看下分配的內存是否使用完,若是採用磁盤表的,還須要登陸mysqld節點,而後執行以下查詢,來肯定是不是磁盤不足:

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";

解決辦法:若是是數據內存不足的狀況,直接更改文件config.ini中[NDBD DEFAULT]下的

DataMemory=11480M

IndexMemory=1024M

根據實際狀況加大

若是是採用磁盤表,磁盤文件空間不足的狀況,就須要添加磁盤文件,格式以下:

ALTER TABLESPACE ts_1

ADD DATAFILE 'data_4.dat'

INITIAL_SIZE 10240M

ENGINE NDBCLUSTER;  

四、  在還原的時候遇到以下報錯:

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節點,所以出現這個報錯

解決辦法:在config.ini添加幾個空的mysqld節點,語法以下:

[MYSQLD]

[MYSQLD]

[MYSQLD]

[MYSQLD]

五、  導入大量數據的時候或者執行大量的insert或者update操做的時候,常常會出現以下報錯:

ERROR 1297 (HY000) at line 1: Got temporary error 1218 'Send Buffers overloaded in NDB kernel' from NDBCLUSTER

這個報錯的緣由有幾個,第1、是參數SendBufferMemory設置太小,第2、和mysqld的二進制日誌有關係,第3、和網絡環境有關係

解決辦法:查看網絡環境是否OK ,是否出現雙工模式部隊,是否都是千兆網或者百兆網,加大SendBufferMemory的設置,通常2M就夠了,設置TotalSendBufferMemory = 256M,最後若是仍是出現如此報錯,建議關閉mysql的二進制日誌,在my.cnf中註釋掉相關的參數就能夠了,好比:

#log-bin=mysql-bin

六、  錯誤日誌

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;

七、  還原的時候出現以下報錯:

Temporary error: 266: Time-out in NDB, probably caused by deadlock

分析緣由:出現這個問題是鎖定超過1.2s

解決辦法:在config.ini中加入:TransactionDeadLockDetectionTimeOut=10000 默認是1200

八、  建立日誌文件組的時候,出現以下報錯:

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解決問題

9.查看集羣狀態

#顯示管理節點和數據節點則配置成功

ndb_mgm -e show 

##出錯:

全部節點正常啓動,可是顯示一直鏈接不上

ndb_mgm> show

Connected to Management Server at: 10.10.54.57:1186

Cluster Configuration

---------------------

[ndbd(NDB)] 2 node(s)

id=2 (not connected, accepting connect from 10.10.54.56)

id=3 (not connected, accepting connect from 10.10.54.58)


[ndb_mgmd(MGM)] 1 node(s)

id=1 @10.10.54.57  (mysql-5.5.35 ndb-7.2.15)


[mysqld(API)] 5 node(s)

id=10 (not connected, accepting connect from 10.10.54.56)

id=11 (not connected, accepting connect from 10.10.54.58)

id=12 (not connected, accepting connect from any host)

id=13 (not connected, accepting connect from any host)

id=14 (not connected, accepting connect from any host)

//查看日誌:

[root@xiao56 ndb]# vim ndb_2_out.log 

[ndbd] ERROR    -- ndbd_malloc_impl.cpp:619:grow(155414, 2061) not using 64Mb - Unable to use due to bitmap pages missaligned!!

解決方法:把DataMemory和IndexMemory的值調小

DataMemory=256M

IndexMemory=64M

#一個NDB節點能存放的數據量是會受到DataMemory和IndexMemory兩個參數設置的約束,二者任何一個達到限制數量後,都沒法再增長能存儲的數據量。若是繼續存入數據系統會報錯「table is full」。

相關文章
相關標籤/搜索