Mysql cluster問題列表

2022-08-03 00:09:14 字數 4246 閱讀 9496

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。通過無共享體系結構,系統...