使ったのは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 件のコメント :
コメントを投稿