LoginSignup
0
2

More than 5 years have passed since last update.

MySQL Cluster をWindowsで動かす

Last updated at Posted at 2017-05-15

正直、ほとんど情報がないので、人柱的に。

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でできている人、教えてください。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2