MYSQL 5.1 CLUSTER ❶ 테스트 환경 1. mysql 버전 : 5.1.30 2. 노드 구성 관리노드 1대 --> 데이터 노드 및 sql 노드 설정 및 관리 노드 데이터 노드 2대 --> 데이터를 저장하는 노드, 데이터와 인덱스는 데이터 노드의 메모리에 저장 됩니다. SQL 노드 1대 --> 클러스터 데이터에 접근하는 노드, 외부 API요청에 대해 데이터 노드에 접근하여 데이터를 조회, 갱신, 삭제 수행 ❷ 설치 및 설정 1. mysql 설치 -> 관리노드의 경우는 mysql 설치가 필요 없습니다. 데이터노드나 sql노드에 설치한 mysql에서 ndb_mgmd와 ndb_mgm을 복사) #./configure --prefix=/usr/local/mysql \ --localstatedir=/usr/local/mysql/data \ --with-charset=euckr \ --with-extra-charsets=all \ --enable-thread-safe-client --with-plugins=max \;
-> cluster을 이용하기 위해서는 --with-plugins=max옵션 필요 #make #make install #cp support-files/my-huge.cnf /etc/my.cnf #scripts/mysql_install_db 2. 관리노드 설정 2-1. 관리노드 디렉토리 생성, 실행 데몬 및 유틸 복사 mkdir /usr/local/cluster --> 임의 디렉토리 생성 cp /usr/local/mysql/libexec/ndbd_mgmd /usr/local/cluster cp /usr/local/mysql/bin/ndbd_mgm /usr/local/cluster 2-2. 관리노드 환경 설정 파일 config.ini 설정 vi /usr/local/cluster/config.ini [NDBD DEFAULT] --> 데이터 노드에 공통적으로 적용될 사항 설정 섹션 NoOfReplicas=2 --> 클러스터내 저장된 테이블에 대한 복사본 수 정의 DataMemory=300M --> 데이터를 저장할 물리 메모리 지정 IndexMemory=100M --> 인덱스를 저장할 물리 메모리 지정
[NDB_MGMD] --> 관리노드 섹션 hostname=192.168.10.1 --> 관리노드 hostname datadir=/usr/local/cluster --> 관리노드 설정파일 config.ini 경로 [NDBD] --> 데이터 노드 섹션 hostname=192.168.10.2 --> 데이터노드 hostname datadir=/usr/local/mysql_cluster2/data --> mysql data 디렉토리 경로 [NDBD] hostname=192.168.10.3 --> 데이터노드 hostname datadir=/usr/local/mysql_cluster2/data --> mysql data디렉토리 경로 [MYSQLD] hostname=192.168.10.4 --> sql 노드 hostname 3. 데이터 노드 1,2 설정 3-1. my.cnf 설정 추가 vi /etc/my.cnf [mysqld] ndbcluster --> cluster 활성화 ndb-connectstring=192.168.10.1 --> 관리노드 IP or hostname
[mysql_cluster] ndb-connectstring=192.168.10.1 --> 관리노드 IP or hostname 3-2. sql노드 설정 . my.cnf 설정 추가 vi /etc/my.cnf [mysqld] ndbcluster ndb-connectstring=192.168.10.1 [mysql_cluster] ndb-connectstring=192.168.10.1 ❸ Cluster 시작 1. 관리노드 데몬 시작 /usr/local/cluster/ndb_mgmd -f /usr/local/cluster/config.ini 2. 데이터노드 데몬 시작 /usr/local/mysql/libexec/ndbd --initial --initial 옵션은 클러스터를 처음 시작하거나 설정 파일이 변경된 경우에만 이옵션을 사용하도록 합니다. 데이터 영역을 초기화 하므로 주의를 요합니다.
3. sql노드 데몬 시작 /usr/local/mysql/share/mysql/mysql.server start ❹ 관리노드 서버에서 연결 확인 1. 관리노드에서 데이터 및 sql 노드 연결 확인 /usr/local/cluster/ndb_mgm -e show 또는 /usr/local/cluster/ndb_mgm 실행후 show명령어를 실행합니다. ndb_mgm> show Connected to Management Server at: 192.168.10.1:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.10.2 (Version: 5.1.30, Nodegroup: 0, Master) id=3 @192.168.10.3 (Version: 5.1.30, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.10.1 (Version: 5.1.30) [mysqld(API)] 1 node(s) id=4 (Version: 5.1.30) ndb_mgm> 데이터 및 sql 노드가 관리노드에 연결이 안된 경우에는 설정파일을 다시 확인해 보아야 하며 sql노드가 연결이 안되었다고 나올시에 데이터 노드 의 방화벽 설정을 확인해 보시기 바랍니다. 데이터 노드 및 sql노드는 관리노드의 1186 포트에 접근 할수 있어야 하며 sql 노드는 data 노드의 특정포트에 접근할수 있어야 합니다.
만약 테이블 생성시 오류가 발생한다면 sql 노드에서 데이터노드에 연결 되지 않았기 때문입니다 ❺ 테이블 생성 확인 * 클러스터링을 사용하기 위해서는 테이블의 타입이 ndb 또는 ndbcluster 이어야 합니다. 기존 테이블일 경우 테이블 타입을 변경하여 하며 새로 테이블을 생성 하는 경우에는 테이블 타입을 ndb 또는 ndbcluster로 지정해 주어야 합니다. . ndb 타입의 테이블 생성 예) create table test (id varchar(10)) engine='ndb'; ❻ Cluster 정지 1. 관리노드, 데이터 노드 정지 /usr/local/cluster/ndb_mgm -e shutdown 또는 /usr/local/cluster/ndb_mgm 실행후 shutdown --> 관리노드와 데이터 노드만 정지 2. sql 노드 정지 /usr/local/mysql/share/mysql/mysql.server stop 3. 특정 노드만 정지 형식 : ndb_mgm>node_id stop 예) ndb_mgm>3 stop
|