2013年6月18日火曜日

時間泥棒なMySQL Clusterのmemcached APIを起動してみる

ちょっと触ってみた。
使ったのはMySQL Cluster 7.3.1-m1(開発版)

( ´-`).oO(って書いてる間に、7.3.2がGAってリリースノートを見た。まだDownloadには来てない。


取り敢えずconfig.iniを最小限で作ってみる。

$ vim config.ini
[NDB_MGMD]
NodeId=49
HostName=localhost
DataDir=/home/yoku/mysql/ndb_7.3.1/mgmd
Portnumber=1186

[NDBD]
NodeId=1
HostName=localhost
DataDir=/home/yoku/mysql/ndb_7.3.1/ndbd/1

[NDBD]
NodeId=2
HostName=localhost
DataDir=/home/yoku/mysql/ndb_7.3.1/ndbd/2

[MYSQLD]
NodeId=51
HostName=localhost

[API]
NodeId=52
HostName=localhost

ディレクトリは自動で作ってくれないので自分で作ってから、ndb_mgmd起動。

$ mkdir -p mgmd ndbd/1 ndbd/2
$ bin/ndb_mgmd --initial --ndb-nodeid=49 --config-file=./config.ini

起動すればそれだけでバックグラウンドに回ってくれる。
続いてndbd。2つ。

$ bin/ndbd --initial --ndb-nodeid=1 --ndb-connectstring=localhost
$ bin/ndbd --initial --ndb-nodeid=2 --ndb-connectstring=localhost

おなじみmysqld。

$ vim my.cnf
[mysqld]
loose-ndbcluster
loose-ndb-connectstring= localhost:1186
log-error= error.log
log-bin= bin

$ scripts/mysql_install_db --datadir=./data
$ bin/mysqld_safe --defaults-file=./my.cnf --datadir=./data &

$ bin/ndb_mgm
ndb_mgm> SHOW
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=1    @127.0.0.1  (mysql-5.6.10 ndb-7.3.1, Nodegroup: 0, Master)
id=2    @127.0.0.1  (mysql-5.6.10 ndb-7.3.1, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=49   @127.0.0.1  (mysql-5.6.10 ndb-7.3.1)

[mysqld(API)]   2 node(s)
id=51   @127.0.0.1  (mysql-5.6.10 ndb-7.3.1)
id=52 (not connected, accepting connect from localhost)

ここまではOK。。(このあとかなりハマった。。)

NDB memcached EngineはInnoDB Memcached Pluginと同じく、
予めそれ用のテーブルを作っておく必要があるので、さっくり食わせる。

$ bin/mysql -uroot < share/memcache-api/ndb_memcache_metadata.sql
$ bin/mysql -uroot -e "SELECT * FROM ndbmemcache.containers"
+------------+-------------+------------------+-------------+----------------+-------+------------------+------------+--------------------+-----------------------------+
| name       | db_schema   | db_table         | key_columns | value_columns  | flags | increment_column | cas_column | expire_time_column | large_values_table          |
+------------+-------------+------------------+-------------+----------------+-------+------------------+------------+--------------------+-----------------------------+
| demo_table | ndbmemcache | demo_table       | mkey        | string_value   | flags | math_value       | cas_value  | NULL               | NULL                        |
| demo_tabs  | ndbmemcache | demo_table_tabs  | mkey        | val1,val2,val3 | flags | NULL             | NULL       | expire_time        | NULL                        |
| demo_ext   | ndbmemcache | demo_table_large | mkey        | string_value   | flags | NULL             | cas_value  | NULL               | ndbmemcache.external_values |
+------------+-------------+------------------+-------------+----------------+-------+------------------+------------+--------------------+-----------------------------+

InnoDB Memcached Pluginと同じように、メタデータを放り込むテーブルに色々定義してやる感じ。
InnoDBのアレはINSTALL PLUGINして再起動だけど、こっちはmemcachedが別プロセスになるのでひょっこり起動してやる。

$ bin/memcached -E lib/ndb_engine.so -e "connectstring=localhost:1186" &
18-Jun-2013 14:41:41 JST NDB Memcache 5.6.10-ndb-7.3.1 started [NDB 7.3.1; MySQL 5.6.10]
Contacting primary management server (localhost:1186) ...
Connected to "localhost:1186" as node id 52.
Retrieved 4 key prefixes for server role "default_role".
The default behavior is that:
    GET uses NDB only
    SET uses NDB only
    DELETE uses NDB only.
The 3 explicitly defined key prefixes are "b:" (demo_table_large), "mc:" () and "t:" (demo_table_tabs)
Server started with 4 threads.
Priming the pump ...
   Failed to grow connection pool.
Scheduler: using 1 connection to cluster 0
Scheduler: starting for 1 cluster; c0,f0,g1,t1
done [14.838 sec].

なぜか-dオプションでバックグラウンド起動させると上手くいかない(´・ω・`)

$ bin/ndb_mgm -e "SHOW"
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=1    @127.0.0.1  (mysql-5.6.10 ndb-7.3.1, Nodegroup: 0, Master)
id=2    @127.0.0.1  (mysql-5.6.10 ndb-7.3.1, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=49   @127.0.0.1  (mysql-5.6.10 ndb-7.3.1)

[mysqld(API)]   2 node(s)
id=51   @127.0.0.1  (mysql-5.6.10 ndb-7.3.1)
id=52   @127.0.0.1  (mysql-5.6.10 ndb-7.3.1)


$ less/mgmd/ndb_49_cluster.log
..

2013-06-18 14:41:40 [MgmtSrvr] INFO     -- Node 1: Communication to Node 52 opened
2013-06-18 14:41:41 [MgmtSrvr] INFO     -- Node 2: Communication to Node 52 opened
2013-06-18 14:41:42 [MgmtSrvr] INFO     -- Nodeid 52 allocated for API at 127.0.0.1
2013-06-18 14:41:42 [MgmtSrvr] INFO     -- Node 52: memcached
2013-06-18 14:41:42 [MgmtSrvr] INFO     -- Node 1: Node 52 Connected
2013-06-18 14:41:42 [MgmtSrvr] INFO     -- Node 2: Node 52 Connected
2013-06-18 14:41:42 [MgmtSrvr] INFO     -- Node 2: Node 52: API mysql-5.6.10 ndb-7.3.1
2013-06-18 14:41:42 [MgmtSrvr] INFO     -- Node 1: Node 52: API mysql-5.6.10 ndb-7.3.1
2013-06-18 14:41:45 [MgmtSrvr] WARNING  -- Failed to allocate nodeid for API at 127.0.0.1. Returned eror: 'No free node id found for mysqld(API).'
2013-06-18 14:41:48 [MgmtSrvr] WARNING  -- Failed to allocate nodeid for API at 127.0.0.1. Returned eror: 'No free node id found for mysqld(API).'
2013-06-18 14:41:51 [MgmtSrvr] WARNING  -- Failed to allocate nodeid for API at 127.0.0.1. Returned eror: 'No free node id found for mysqld(API).'
2013-06-18 14:41:54 [MgmtSrvr] WARNING  -- Failed to allocate nodeid for API at 127.0.0.1. Returned eror: 'No free node id found for mysqld(API).'
2013-06-18 14:41:57 [MgmtSrvr] WARNING  -- Failed to allocate nodeid for API at 127.0.0.1. Returned eror: 'No free node id found for mysqld(API).'

コネクションプールが作れないとか行ってたのは、APIノードの定義を2つしか作ってないから、
mysqldで1個、memcachedで1個しか使えなくてこうなってるのかな。


ともあれこれで

$ telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
set name 0 0 8
yoku0825
Pipeline 0 attached to S scheduler.
STORED
get name
VALUE name 0 8
yoku0825
END
^]
telnet> quit
Connection closed.

$ bin/mysql -uroot -e "SELECT * FROM ndbmemcache.demo_table"
+------+------------+-------+---------------+--------------+
| mkey | math_value | flags | cas_value     | string_value |
+------+------------+-------+---------------+--------------+
| name |       NULL |     0 | 6129992073216 | yoku0825     |
+------+------------+-------+---------------+--------------+

イェーイ。

0 件のコメント :

コメントを投稿