はじめに
仕事でMySQL Cluster使う事が決まったので最新版で環境構築を行なったのでメモ
参考URL
日本語は7.4のやつしか無い
https://dev.mysql.com/doc/refman/5.6/ja/mysql-cluster-installation.html
英語 ←☆結果これ☆ 7.4と7.5で設定ファイルの記載方法が異なるので結果ココを読む必要がある。
https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-installation.html
環境
ちょっぱやで作りたかったのでVagrantで環境構築(Vagrantは相性とかあるのでバージョンは以下)
Vagrant Version:2.2.4
VertualBox Version:6.0.4
設定ファイルはこんな感じ。
### server1の設定内容
config.vm.define "d1" do |server|
server.vm.hostname = config.vm.box + "-d1" + ".vagrant"
server.vm.network "private_network", ip: "192.168.200.101", host: "52001"
config.vm.provider "virtualbox" do |vb|
### virtualbox上で表示される名前
vb.name = config.vm.box + "_d1"
vb.customize ["modifyvm", :id, "--memory", "2048"]
vb.customize ["modifyvm", :id, "--cpus", "2"]
end
end
### server2の設定内容
config.vm.define "d2" do |server|
server.vm.hostname = config.vm.box + "-d2" + ".vagrant"
server.vm.network "private_network", ip: "192.168.200.102", host: "52002"
config.vm.provider "virtualbox" do |vb|
### virtualbox上で表示される名前
vb.name = config.vm.box + "_d2"
vb.customize ["modifyvm", :id, "--memory", "2048"]
vb.customize ["modifyvm", :id, "--cpus", "1"]
end
end
### server0の設定内容
config.vm.define "s0" do |server|
server.vm.hostname = config.vm.box + "-s0" + ".vagrant"
server.vm.network "private_network", ip: "192.168.200.200", host: "53001"
config.vm.provider "virtualbox" do |vb|
### virtualbox上で表示される名前
vb.name = config.vm.box + "_s0"
vb.customize ["modifyvm", :id, "--memory", "2048"]
vb.customize ["modifyvm", :id, "--cpus", "1"]
end
end
### serverMの設定内容
config.vm.define "sM" do |server|
server.vm.hostname = config.vm.box + "-sM" + ".vagrant"
server.vm.network "private_network", ip: "192.168.200.100", host: "52000"
config.vm.provider "virtualbox" do |vb|
### virtualbox上で表示される名前
vb.name = config.vm.box + "_sM"
vb.customize ["modifyvm", :id, "--memory", "2048"]
vb.customize ["modifyvm", :id, "--cpus", "1"]
end
end
構成
サイトで推奨している最小構成で構築(こんな想定)
sM:192.168.200.100:管理サーバ(MGMノード)
s0:192.168.200.200:管理サーバ(SQLノード)
d1:192.168.200.101:データノードA(NDBDノード)
d2:192.168.200.102:データノードB(NDBDノード)
インストールパッケージ
今回はRPMパッケージでインストール(パッケージはこれ(RPMのバンドル):wgetとかで持ってくる。)
https://cdn.mysql.com//Downloads/MySQL-Cluster-7.5/mysql-cluster-community-7.5.13-1.el7.x86_64.rpm-bundle.tar
確認
SSHの疎通確認
ssh 192.168.200.100 -l root
ssh 192.168.200.200 -l root
ssh 192.168.200.101 -l root
ssh 192.168.200.102 -l root
※passwordは全てvagrant
SCPでコピー
・管理サーバ(MGMノード)
MySQL-Cluster-management-server-XXXXXX.rpm
・管理サーバ(SQLノード)
MySQL-Cluster-server-XXXXXX.rpm
→ MySQL-Cluster-client-XXXXXX.rpm
→ MySQL-Cluster-common-XXXXXX.rpm
→ MySQL-Cluster-lib-XXXXXX.rpm
・データノード(NDBDノード)
MySQL-Cluster-data-node-XXXXXX.rpm
RPMインストール
rpm -Uhv XXX.rpm
注意
管理サーバ(SQLノード)でclientのRPMが入らない。。(client)
perl-DBIとperl-Class-MethodMakerが必要。
perl-DBIは、yumで入れた。
perl-Class-MethodMakerは、wgetでRPM落としてきてインストール。
http://repo.openfusion.net/centos7-x86_64//perl-Class-MethodMaker-2.21-1.of.el7.x86_64.rpm
設定
設定ファイル
全てのサーバに配布
[mysqld]
# Options for mysqld process:
ndbcluster # run NDB storage engine
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=192.168.200.100 # location of management server
ディレクトリ作成
mkdir -p /usr/local/mysql/data
ディレクトリ作成
管理ノードで設定ファイル作成
% mkdir /var/lib/mysql-cluster
% cd /var/lib/mysql-cluster
% vi config.ini
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2 # Number of replicas
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for 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 NDB Cluster setup.
ServerPort=2202 # This the default value; however, you can use any
# port that is free for all the hosts in the cluster
# Note1: It is recommended that you do not specify the port
# number at all and simply allow the default value to be used
# instead
# Note2: The port was formerly specified using the PortNumber
# TCP parameter; this parameter is no longer available in NDB
# Cluster 7.5.
[ndb_mgmd]
# Management process options:
HostName=192.168.200.100 # Hostname or IP address of MGM node
DataDir=/var/lib/mysql-cluster # Directory for MGM node log files
[ndbd]
# Options for data node "d1":
# (one [ndbd] section per data node)
HostName=192.168.200.101 # Hostname or IP address
NodeId=2 # Node ID for this data node
DataDir=/usr/local/mysql/data # Directory for this data node's data files
[ndbd]
# Options for data node "d2":
HostName=192.168.200.102 # Hostname or IP address
NodeId=3 # Node ID for this data node
DataDir=/usr/local/mysql/data # Directory for this data node's data files
[mysqld]
# SQL node options:
HostName=192.168.200.200 # Hostname or IP address
# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
起動
管理ノード起動
% ndb_mgmd -f /var/lib/mysql-cluster/config.ini
MySQL Cluster Management Server mysql-5.7.25 ndb-7.5.13
データノード起動
% ndbd
2019-04-15 08:08:47 [ndbd] INFO -- Angel connected to '192.168.200.100:1186'
2019-04-15 08:08:47 [ndbd] INFO -- Angel allocated nodeid: 2
起動しない時は管理ノードなどのFireWallをOFFにする
CentOS7ならこれでいける。
% systemctl stop iptables
% systemctl disable iptables
% systemctl status iptables
起動確認
確認にはndb_mgmが必要。(今回入れたのはSQLノードなのでSQLノードで確認)
% ndb_mgm
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.200.101 (mysql-5.7.25 ndb-7.5.13, Nodegroup: 0, *)
id=3 @192.168.200.102 (mysql-5.7.25 ndb-7.5.13, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.200.100 (mysql-5.7.25 ndb-7.5.13)
[mysqld(API)] 1 node(s)
id=4 @192.168.200.200 (mysql-5.7.25 ndb-7.5.13)
管理ノードにもclientを入れたほうが良さそう?
停止
停止もndb_mgmを使う
% ndb_mgm -e shutdown
とりあえず以上。