OS : HP-UX 11.11 * 2
MySQL : MySQL-MAX-5.0.19 binary version
* 설치 개요
두 대의 장비로 MySQL을 돌리고
한 대(이하 장비 A)는 Management Server, Data Node, SQL Node로
다른 한 대(이하 장비 B)는 Data Node, SQL Node로 설치한다.
1. http://dev.mysql.com 에서 해당 버전을 다운로드 한다.
2. 두 대의 장비에 mysql1 계정을 만들고 ~/mysql 디렉토리에 설치한다.
3. 장비 A에 ~/mysql/ 안에 my.cnf, config.ini 파일을 만든다.
~/mysql/support-files/에 샘플을 가져와 편집하면 편하다.
4. 장비 A의 config.ini 파일
---------------------------------------------------------------------
# Example Ndbcluster storage engine config file.
#
[ndbd default]
NoOfReplicas=2
MaxNoOfConcurrentOperations=10000
DataMemory=80M
IndexMemory=24M
TimeBetweenWatchDogCheck=30000
MaxNoOfOrderedIndexes=512
[ndb_mgmd default]
DataDir=/home/mysql1/mysql/ndb_log
[ndb_mgmd]
Id=1
HostName=nodeA
[ndbd]
Id=2
HostName=nodeA
DataDir=/home/mysql1/mysql/ndb_log
[ndbd]
Id=3
HostName=nodeB
DataDir=/home/mysql1/mysql/ndb_log
[mysqld]
Id=4
HostName=nodeA
[mysqld]
Id=5
HostName=nodeB
---------------------------------------------------------------------
5. 장비 A와 B의 my.cnf 파일에 아래 사항을 추가한다.
---------------------------------------------------------------------
...
[mysqld]
...
ndbcluster
ndb-connectstring="nodeA:1186"
[mysql_cluster]
ndb-connectstring="nodeA:1186"
...
---------------------------------------------------------------------
6. 장비 A의 my.cnf 파일에 아래 사항을 수정한다.
server-id = 4
7. 장비 B의 my.cnf 파일에 아래 사항을 수정한다.
server-id = 5
8. 설정은 끝났다. 하나씩 실행해보자.
기본적으로 설정 파일에 지정된 경로들은 모두 존재해야 한다.
MySQL을 실행하기 전에 최소한 DB는 설치 되어야 한다.
Binary로 설치한 경우 ~/mysql/configure 실행
Complie 한 경우 mysql_install_db 실행
9. Management Server Daemon을 제일 먼저 실행한다.
~/mysql/ 밑에서 실행할 경우 config.ini가 같은 디렉토리에 존재하므로 다른 파라메타가 필요없다.
<장비A>
$ ndb_mgmd
Cluster configuration warning:
arbitrator with id 1 and db node with id 2 on same host nodeA
Running arbitrator on the same host as a database node may
cause complete cluster shutdown in case of host failure.
같은 노드에 Management Server Daemon와 Data node가 실행된다는 경고문이다.
환경이 열악하므로 무시한다.
$ ndb_mgm -e show
Connected to Management Server at: nodeA:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from nodeA)
id=3 (not connected, accepting connect from nodeB)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @nodeA (Version: 5.0.19)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from nodeA)
id=5 (not connected, accepting connect from nodeB)
장비 A에 Management Server 가 실행된 모습.
10. 장비 A와 B에서 ndbd를 실행한다.
이때 MySQL 매뉴얼에는 my.cnf 파일에 NDBD 설정이 있으니
그냥 실행하면 된다고 하지만 실제로 읽어들이지 못했다.
그래서 Management Server의 정보와 Data Node의 정보를
파라메타로 넘겨주어야 한다.
<장비A>
$ ndbd --initial --ndb-connectstring="nodeid=2,nodeA:1186"
Data Node의 ID가 2번으로 설정된다.
Management Server의 기본 포트가 1186번이다.
$ ndb_mgm -e show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @nodeA (Version: 5.0.19, starting, Nodegroup: 0, Master)
id=3 (not connected, accepting connect from nodeB)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @nodeA (Version: 5.0.19)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from nodeA)
id=5 (not connected, accepting connect from nodeB)
장비 A에서 Data Node가 실행된 모습.
<장비B>
$ ndbd --initial --ndb-connectstring="nodeid=3,nodeA:1186"
$ $ ndb_mgm -e show --ndb-connectstring="nodeA:1186"
Connected to Management Server at: nodeA:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @nodeA (Version: 5.0.19, starting, Nodegroup: 0, Master)
id=3 @nodeB (Version: 5.0.19, starting, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 (Version: 5.0.19)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from nodeA)
id=5 (not connected, accepting connect from nodeB)
장비 A에서 Data Node가 실행된 모습.
11. 장비 A와 B에서 MySQL 서버를 실행한다.
mysql.server 파일로 실행할 경우 제대로 실행되지 않았다.
이 경우는 이유를 알 수 없었다.
mysqld_safe로 실행할 경우 ~/mysql 밑에서만 제대로 실행되었다.
이 경우 본인의 서버에 MySQL이 여러 경로에 많이 설치되어 있어서 그런듯 했다.
<장비A>
$ mysqld_safe &
$ $ ndb_mgm -e show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @nodeA (Version: 5.0.19, Nodegroup: 0, Master)
id=3 @nodeB (Version: 5.0.19, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @nodeA (Version: 5.0.19)
[mysqld(API)] 2 node(s)
id=4 @nodeA (Version: 5.0.19)
id=5 (not connected, accepting connect from nodeB)
장비 A에서 SQL Node가 실행된 모습.
<장비B>
$ mysqld_safe &
$ ndb_mgm -e show --ndb-connectstring="nodeA:1186"
Connected to Management Server at: nodeA:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @nodeA (Version: 5.0.19, Nodegroup: 0, Master)
id=3 @nodeB (Version: 5.0.19, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @nodeA (Version: 5.0.19)
[mysqld(API)] 2 node(s)
id=4 @nodeA (Version: 5.0.19)
id=5 @nodeB (Version: 5.0.19)
장비 B에서 SQL Node가 실행된 모습.
12. 완료.
Management Server와 두개의 Data Nodes, SQL Nodes가 모두 실행되었다.
13. 주의 사항
같은 종류의 장비에서만 가능하다.