Назад | Перейти на главную страницу

Тестирование кластера MySQL с использованием flexAsynch: не найден свободный идентификатор узла для mysqld (API)?

Я собираюсь протестировать MySQL Cluster, используя flexAsynch. этот руководство, подробности как ниже:

mkdir /usr/local/mysqlc732/
cd /usr/local/src/mysql-cluster-gpl-7.3.2
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysqlc732/ -DWITH_NDB_TEST=ON
make
make install

Все работает нормально до этого шага:

# /usr/local/mysqlc732/bin/flexAsynch -t 1 -p 80 -l 2 -o 100 -c 100 -n

FLEXASYNCH - Starting normal mode
Perform benchmark of insert, update and delete transactions
  1 number of concurrent threads 
  80 number of parallel operation per thread 
  100 transaction(s) per round 
  2 iterations 
  Load Factor is 80%
  25 attributes per table 
  1 is the number of 32 bit words per attribute 
  Tables are with logging 
  Transactions are executed with hint provided
  No force send is used, adaptive algorithm used

Key Errors are disallowed
Temporary Resource Errors are allowed
Insufficient Space Errors are disallowed
Node Recovery Errors are allowed
Overload Errors are allowed
Timeout Errors are allowed
Internal NDB Errors are allowed
User logic reported Errors are allowed
Application Errors are disallowed
Using table name TAB0

NDBT_ProgramExit: 1 - Failed

ndb_cluster.log:

ВНИМАНИЕ! Не удалось выделить nodeid для API 127.0.0.1. Возвращено сообщение об ошибке: «Не найден идентификатор свободного узла для mysqld (API)».

Я также перекомпилировал -DWITH_DEBUG=1 -DWITH_NDB_DEBUG=1. Как я могу бежать flexAsynch в режиме отладки?

# /usr/local/mysqlc732/bin/flexAsynch -h
FLEXASYNCH
   Perform benchmark of insert, update and delete transactions

Arguments:
   -t Number of threads to start, default 1
   -p Number of parallel transactions per thread, default 32
   -o Number of transactions per loop, default 500
   -l Number of loops to run, default 1, 0=infinite
   -load_factor Number Load factor in index in percent (40 -> 99)
   -a Number of attributes, default 25
   -c Number of operations per transaction
   -s Size of each attribute, default 1 
      (PK is always of size 1, independent of this value)
   -simple Use simple read to read from database
   -dirty Use dirty read to read from database
   -write Use writeTuple in insert and update
   -n Use standard table names
   -no_table_create Don't create tables in db
   -temp Create table(s) without logging
   -no_hint Don't give hint on where to execute transaction coordinator
   -adaptive Use adaptive send algorithm (default)
   -force Force send when communicating
   -non_adaptive Send at a 10 millisecond interval
   -local 1 = each thread its own node, 2 = round robin on node per parallel trans 3 = random node per parallel trans
   -ndbrecord Use NDB Record
   -r Number of extra loops
   -insert Only run inserts on standard table
   -read Only run reads on standard table
   -update Only run updates on standard table
   -delete Only run deletes on standard table
   -create_table Only run Create Table of standard table
   -drop_table Only run Drop Table on standard table
   -warmup_time Warmup Time before measurement starts
   -execution_time Execution Time where measurement is done
   -cooldown_time Cooldown time after measurement completed
   -table Number of standard table, default 0

Так как flexAsynch использует асинхронный NDB API, поэтому мне нужно добавить свободный слот в config.ini:

[MYSQLD]           
NodeId: 13         
Hostname=10.2.3.201

затем перезапустите узлы управления и все узлы данных:

Connected to Management Server at: 10.2.3.201:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=3    @10.2.3.200  (mysql-5.5.30 ndb-7.2.12, Nodegroup: 0, Master)
id=4    @10.2.3.202  (mysql-5.5.30 ndb-7.2.12, Nodegroup: 0)

[ndb_mgmd(MGM)] 2 node(s)
id=1    @10.2.3.201  (mysql-5.5.30 ndb-7.2.12)
id=2    @10.2.3.203  (mysql-5.5.30 ndb-7.2.12)

[mysqld(API)]   9 node(s)
id=5    @10.2.3.201  (mysql-5.5.30 ndb-7.2.12)
id=6    @10.2.3.201  (mysql-5.5.30 ndb-7.2.12)
id=7    @10.2.3.201  (mysql-5.5.30 ndb-7.2.12)
id=8    @10.2.3.201  (mysql-5.5.30 ndb-7.2.12)
id=9    @10.2.3.203  (mysql-5.5.30 ndb-7.2.12)
id=10   @10.2.3.203  (mysql-5.5.30 ndb-7.2.12)
id=11   @10.2.3.203  (mysql-5.5.30 ndb-7.2.12)
id=12   @10.2.3.203  (mysql-5.5.30 ndb-7.2.12)
id=13 (not connected, accepting connect from 10.2.3.201)

Повторно запустите flexAsynch и теперь все работает нормально:

insert average: 59674/s min: 59590/s max: 59759/s stddev: 0%
update average: 60077/s min: 58445/s max: 61709/s stddev: 2%
delete average: 137487/s min: 134205/s max: 140770/s stddev: 2%
read   average: 100763/s min: 98413/s max: 103013/s stddev: 2%

NDBT_ProgramExit: 0 - OK