MySQL Cluster 7.4 with Ubuntu 14.04


참고

시스템 구성

Node Network Notes
management1 192.168.56.101 mgm1
management2 192.168.56.102 mgm2
sql1 192.168.56.105 api1
sql2 192.168.56.106 api2
data1 192.168.56.161 ndb1
data2 192.168.56.162 ndb2

Installation

Base

문서에 나온 대로 한 번 하다가 말아먹었다. 그냥 모든 시스템을 동일하게 구성하고 복제본을 여러개 만들고 각각의 설정 파일들만 따로 만들어야겠다.

VirtualBox Guest Additions

이건 뭐 별 상관은 없지만…

$ sudo apt-get -y install make gcc
...
$ sudo mount -t iso9660 /dev/cdrom /media/cdrom
...
$ cd /media/cdrom
$ sudo ./VBoxLinuxAdditions.run
...
$ sudo shutdown -r now

재기동이 되면 자기 자신을 vboxsf 그룹에 추가한 후 다시 로그인 하자.

$ sudo usermod -a -G vboxsf username
$ logout
...
$ groups
... ... ... ... ... ... ... vboxsf
$

Host-only Adapter

NAT 외에 Host-only Adapter를 하나 더 추가하여 VM 들 끼리 통신이 가능하게 한다.

$ cat /etc/network/interface
...
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# Host-only Adapter
auto eth1
iface eth1 inet static
      address    192.168.56.101
      netmask    255.255.255.0
      network    192.168.56.0
      broadcast  192.168.56.255
$

MySQL Cluster

MySQL 을 위한 계정을 하나 만들자.

$ sudo adduser --system --no-create-home --group mysql
...
$

내려 받은 mysql-cluster-gpl-7.4...tar.gz 파일을 /usr/local 에 풀고 심볼릭 링크를 하나 만들자.

$ pwd
/usr/local
$ ls -1
...
mysql-cluster-gpl-7.4...tar.gz
...
$ sudo tar xzf mysql-cluster-gpl-7.4...tar.gz
$ ls -1F
...
mysql-cluster-gpl-7.4...-linux-glibc2.5-x86_64/
mysql-cluster-gpl-7.4...tar.gz
...
$ sudo ln -s mysql-cluster-gpl-7.4...-linux-glibc2.5-x86_64/ mysql
$ ls -l
...
.................................. mysql -> mysql-cluster-gpl-7.4...
                                   mysql-cluster-gpl-7.4.../
...
$ sudo rm mysql-cluster-gpl-7.4...tar.gz

아래와 같이 권한을 부여하자.

$ cd /usr/local/mysql
$ sudo chown -R root .
$ sudo chown -R mysql data
$ sudo chgrp -R mysql .
$

이제 각각의 노드를 복제하고 다음과 같은 작업들을 수행한다.

SQL nodes

db를 설치하자.

$ sudo apt-get -y install libaio1
...
$ cd /usr/local/mysql
$ sudo ./scripts/mysql_install_db --user=mysql
...
$

init script를 등록하자.

$ cd /etc/init.d
$ sudo ln -s /usr/local/mysql/support-files/mysql.server
$ sudo update-rc.d mysql.server defaults

Data nodes

실행파일들을 복사하자.

$ cd /usr/local/bin
$ sudo ln -s /usr/local/mysql/bin/ndbd
$ sudo ln -s /usr/local/mysql/bin/ndbmtd

Management nodes

실행파일들을 복사하자.

$ cd /usr/local/bin
$ sudo ln -s /usr/local/mysql/bin/ndb_mgm
$ sudo ln -s /usr/local/mysql/bin/ndb_mgmd

Configuration

SQL/Data nodes

SQL node 와 data node 에 다음과 같이 설정파일을 준비하자.

$ cd /etc
$ sudo emacs my.cnf
...
$ cat my.cnf
[mysqld]
ndbcluster

[mysql_cluster]
ndb-connectstring="192.169.56.101,192.168.56.102"
$

Management nodes

기본 위치가 /usr/local/mysql/mysql-cluster인 듯 하다.

$ cd /usr/local/mysql
$ sudo mkdir mysql-cluster
$ sudo chown mysql:mysql mysql-cluster
$

다음과 같이 설정 파일을 준비하자.

$ cat /usr/local/mysql/config.ini
[ndbd default]
NoOfReplicas=1
#DataMemory=80M
#IndexMemory=18M

[tcp default]
#portnumber=2202

[ndb_mgmd]
hostname=192.168.56.101
datadir=/usr/local/mysql/data

[ndbd]
hostname=192.168.56.161
datadir=/usr/local/mysql/data

[mysqld]
hostname=192.168.56.105
$

Start

Management nodes

$ sudo -u mysql ndb_mgmd -f /usr/local/mysql/config.ini
$

Data nodes

$ sudo -u mysql ndbd
...
$

SQL nodes

$ sudo /etc/init.d/mysql.server start
..
$