mysql5 클러스터

운영자 | 기사입력 2010/10/23 [13:37]
>
필자의 다른기사 보기 인쇄하기 메일로 보내기 글자 크게 글자 작게
mysql5 클러스터
 
운영자   기사입력  2010/10/23 [13:37]
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
트위터 트위터 페이스북 페이스북 카카오톡 카카오톡
기사입력: 2010/10/23 [13:37]  최종편집: ⓒ iwav