mysql cluster問題列表
在安裝和使用
mysql cluster
集群的過程中,遇到了很多問題,現在把那些問題列出來,並復上解決方法,希望大家在以後的使用中能少花時間少走彎路
1、匯入資料的時候遇到如下報錯:
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
分析原因:表但行資料太大
解決辦法:需要更改表結構,使最大單行資料的大小小於
8kb!
2、匯入大量資料的時候遇到如下報錯
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
檔案,更改或新增如下引數:
fragmentlogfilesize=256m
nooffragmentlogfiles=16
nooffragmentlogfiles
這個引數可以更改到更大,但是初始化的時候會慢一點
3、在匯入大量資料的時候,出現如下報錯:
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;
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
節點,因此出現這個報錯
解決辦法:在
config.ini
新增幾個空的
mysqld
節點,語法如下:
[mysqld]
[mysqld]
[mysqld]
[mysqld]
5、匯入大量資料的時候或者執行大量的
insert
或者update
操作的時候,經常會出現如下報錯:
error 1297 (hy000) at line 1: got temporary error 1218 'send buffers
overloaded in ndb kernel' from ndbcluster
這個報錯的原因有幾個,第
一、是引數
sendbuffermemory
設定過小,第
二、和mysqld
的二進位制日誌有關係,第
三、和網路環境有關係
解決辦法:檢視網路環境是否
ok ,是否出現雙工模式部隊,是否都是千兆網或者百兆網,加大
sendbuffermemory
的設定,一般
2m就夠了,設定
totalsendbuffermemory = 256m
,最後如果還是出現如此報錯,建議關閉
mysql
的二進位制日誌,在
my.cnf
#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、還原的時候出現如下報錯:
temporary error: 266: time-out in ndb, probably caused by deadlock
分析原因:出現這個問題是鎖定超過
1.2s
解決辦法:在
config.ini
中加入:
transactiondeadlockdetectiontimeout=10000
預設是1200
8、建立日誌檔案組的時候,出現如下報錯:
error code : 1528 failed to create logfile group
用show warnings;
檢視詳細報錯如下:
goterror 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 Cluster 問題排查工具
利用 cluster 自帶乙個錯誤 檢視程式。這個程式就是 在mysql安裝目錄的bin下面的perror.exe。下面是win裡面的使用方法 perror ndb 錯誤 或者perror 錯誤 c program files mysql mysql cluster 7.4 bin perror n...
mysql cluster的常見問題
ndb和innodb一樣會設定檢查點,定期的將資料寫入到磁碟中,ndb啟動的時候會將資料載入到記憶體 磁碟表只載入主鍵和索引的列,稍後會提到 記憶體和磁碟表的最大的區別就是 磁碟表只會將主鍵列和索引列以及索引load到記憶體中,其他沒有索引的列儲存在磁碟,儲存在表空間的資料檔案中。而記憶體表是全部列...
mysqlcluster的常見問題
mysql cluster是mysql適合於分布式計算環境的高實用 高冗餘版本。它採用了ndb cluster儲存引擎,允許在1個cluster中執行多個mysql伺服器。mysql cluster是一種技術,該技術允許在無共享的系統中部署 記憶體中 資料庫的cluster。通過無共享體系結構,系統...