正直、ほとんど情報がないので、人柱的に。
#MySQL Cluster をWindowsで動かすのに必要なもの
##MySQL Cluster 本体
なにはともあれ、WindowsのBinaryを準備するのがよいと思われるが、今回は、No-installer版で設定
今回は、下記からWindows (x86, 64-bit), ZIP Archive のものをダウンロード
##マニュアル
日本語版だけど、英語版も、内容は変わらない。
https://dev.mysql.com/doc/refman/5.6/ja/mysql-cluster-install-windows-binary.html
これをマニュアルと呼ぶ。
(とはいえ、これを信じたらひどい目に…)
##前提
4台のPCにそれぞれ設定する
それぞれ、同じネットワークのホストA,B,C,Dとする。
Aは管理サーバー、BはSQLノード、C,Dはデータノードとする。
ちなみに、setup.bat を使うAuto-installerのやつは、sshの設定がうまくいかないのと、
index of ... 云々っていうエラーと、Paramikoのpip install(実質はupgrade)が必要であって、
Windowsではいかんせんめんどくさく、それに気付くのに数時間かかったので、今回はパスです。
正直、Auto-installerでできている人、教えてください。(Windowsで)
#手順
###ファイルの配置とconfig.ini, my.iniの作成
https://dev.mysql.com/doc/refman/5.6/ja/mysql-cluster-install-windows-binary.html
に従って、とりあえずファイルを配置していく。
例えば、SQLノードであるBには、Zipのものを解答し、c:\mysql に、そのまま展開する。
すると、c:\mysql 以下には、 bin, docs, include ... と複数並ぶ感じになる。
他のものは、省略。
###config.iniの更新(管理ノード:ホストA)
マニュアルのconfig.iniには、NodeIDがないので、NodeIDを追記する。
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2 # Number of replicas
DataDir=C:/mysql/cluster-data # Directory for each data node's data files
# Forward slashes used in directory path,
# rather than backslashes. This is correct;
# see Important note in text
DataMemory=80M # Memory allocated to data storage
IndexMemory=18M # Memory allocated to index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the "world" database takes up
# only about 500KB, this should be more than enough for
# this example Cluster setup.
[ndb_mgmd]
# Management process options:
HostName=A # Hostname or IP address of management node
DataDir=C:/mysql/bin/cluster-logs # Directory for management node log files
NodeId=100 #ここに追記
[ndbd]
# Options for data node "A":
# (one [ndbd] section per data node)
HostName=C # Hostname or IP address
NodeId=1 #ここに追記
[ndbd]
# Options for data node "B":
HostName=D # Hostname or IP address
NodeId=2 #ここに追記
[mysqld]
# SQL node options:
HostName=B # Hostname or IP address
NodeId=50 #ここに追記
###Log用、データ用、キャッシュ用のフォルダを作成
管理サーバー A で以下のコマンドを実行
c:
cd c:\mysql
mkdir bin\cluster-logs
必要あらば、管理者で.
#さぁ、ここからだ…
##管理サーバーを起動
マニュアルには、
C:\mysql\bin> ndb_mgmd
2010-06-23 07:53:34 [MgmtSrvr] INFO -- NDB Cluster Management Server. mysql-5.6.22-ndb-7.4.4
2010-06-23 07:53:34 [MgmtSrvr] INFO -- Reading cluster configuration from 'config.ini'
とあるけど、実際にやると、
C:\mysql\bin>ndb_mgmd
MySQL Cluster Management Server mysql-5.7.18 ndb-7.5.6
2017-05-16 04:06:55 [MgmtSrvr] ERROR -- Could not determine which nodeid to use for this node. Specify it with --ndb-nodeid=<nodeid> on command line
となってハマる。
Specify it with --ndb-nodeid= on command line
と書いているので、オプションをつけてみると…
C:\mysql\bin>ndb_mgmd --ndb-nodeid=100
MySQL Cluster Management Server mysql-5.7.18 ndb-7.5.6
2017-05-16 04:09:12 [MgmtSrvr] INFO -- Trying to get configuration from other mgmd(s) using 'nodeid=100,localhost:1186'...
ってなってハマる。これに1時間以上ハマったのだけど、どうやら、bin/config.iniが読み取れてないことが判明。
次のオプションを付けて上げる。
C:\mysql\bin>ndb_mgmd -f config.ini --ndb-nodeid=100
MySQL Cluster Management Server mysql-5.7.18 ndb-7.5.6
C:\mysql\bin>
デーモン立ちあがらんやん!!!
ここで、さらに嵌まる。
エラーは出てないこともあり、かなり不明。
色々試して分かったが理由を探るのに、かなり時間を費やす。
マニュアルにあるように、ndb_mgm.exeを実行しても、1186につなごうとするだけでどうしようもない。
この後、1186番のポートを開けたらうまくいくのか?と試すが、変化なし。
##n時間後
結局、パラメータを片っ端から入力しまくる。
最適とは言えないが、下記のやり方でどうにかなった。
・以下のフォルダを適当に作成。今回はc:\mysql\bin以下に作成する。
正直どこでも良いと思うし、フォルダ名もなんでも良いです。
mkdir c:\mysql\bin\confdir
・以下のコマンドを実行
C:\mysql\bin>ndb_mgmd -f config.ini --configdir=confdir
まさかの--configdirを設定しないとだめみたい。
##データノード
余裕。マニュアル通り ndbd.exeを立ち上げればよい。
もし、warningが出るようならば、 管理者で実行すれば文句を言わなくなる。
MFC120***.DLL が足らないという場合には、下記の再配布パッケージをダウンロードしてインストールすれば、OK.
##SQLノード
n度目の嵌り。
mysqld --console
を実施しようにも色々とはまる。
"mysql.plugin doesn't work" とかでたり、下記のようなエラーがでる。
2017-05-15T18:41:50.929615Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
解決するために、以下のコマンドを実施
mysqld --initialize --basedir=c:\mysql
これで初期化がおわって、その後、mysqld --consoleで無事立ち上がります。
追記:
--consoleを--basedirの後につけて置かないと、rootのパスワードがわからなくて、困ります。
なにはともあれ、すぐに、Rootのパスワードは設定し直すといいと思います。
mysqld --initialize --basedir=c:\mysql --console
mysqladmin password newpassword -u root -p
#おつかれさまでした
実は、初めて MySQLを一からインストールしました。msiファイルを使わずに。
なんか、大変MySQLに詳しくなった気がしました。
要望あれば、設定ファイルを挙げる、もしくは自動化するプログラムを書こうと思います。
質問、不備があれば、教えてください。
今回のやり方ではなく、Auto-installerでできている人、教えてください。