• Like
  • Save
5노드 MySQL Cluster 구성 및 테스트
Upcoming SlideShare
Loading in...5
×
 

5노드 MySQL Cluster 구성 및 테스트

on

  • 9,290 views

5노드 MySQL Cluster 구성 및 테스트

5노드 MySQL Cluster 구성 및 테스트

Statistics

Views

Total Views
9,290
Views on SlideShare
9,227
Embed Views
63

Actions

Likes
2
Downloads
204
Comments
0

3 Embeds 63

http://mixellaneous.tistory.com 32
http://www.slideshare.net 30
http://209.85.175.104 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    5노드 MySQL Cluster 구성 및 테스트 5노드 MySQL Cluster 구성 및 테스트 Presentation Transcript

    • 5노드 MySQL Cluster 구축하기 김영우 (warwithin@gmail.com) MySQL Cluster MySQL Cluster는 MySQL (Network Database) Cluster를 의미한다. • MYSQL Cluster의 구성 요소는 다음과 같다. • 노드 및 네트워크 구성 클러스터의 노드는 Management 노드 1대, Data 노드 2대, SQL 노드 2대이다. 그래서, • 총 5대의 노드로 구성된 클러스터로 구성하였다. 클러스터 구성에 사용할 실제 서버가 없는 관계로 VirtualBox? 라는 가상화 어플리케 • 이션으로 5개의 가상머신을 생성하여 클러스터의 성능보다는 기능 테스트에 중점을 두었다. 클러스터 노드 구성(노드명, 아이피) • linux-mgmt, 192.168.1.1 linux-ndbd1, 192.168.1.11 linux-ndbd2, 192.168.1.12 linux-sql1, 192.168.1.21 linux-sql2, 192.168.1.22 우선 하나의 노드에 CentOS 5를 설치하고, MySQL 5.1.17-beta버전을 설치하였 • 다. 그리고 다음과 같이 추가로 필요한 4개의 가상 머신을 생성한다. vboxmanage clonevdi d:virtualhardlinux-mgmt.vdi d:virtualhardlinux-ndbd1.vdi vboxmanage clonevdi d:virtualhardlinux-mgmt.vdi d:virtualhardlinux-ndbd2.vdi
    • vboxmanage clonevdi d:virtualhardlinux-mgmt.vdi d:virtualhardlinux-sql1.vdi vboxmanage clonevdi d:virtualhardlinux-mgmt.vdi d:virtualhardlinux-sql2.vdi 각 노드간 통신을 위하여 Internal Network 구성 • vboxmanage modifyvm Linux-ndbd1 -nic1 intnet vboxmanage modifyvm Linux-ndbd1 -intnet1 testnet vboxmanage modifyvm Linux-ndbd2 -nic1 intnet vboxmanage modifyvm Linux-ndbd2 -intnet1 testnet vboxmanage modifyvm Linux-sql1 -nic1 intnet vboxmanage modifyvm Linux-sql1 -intnet1 testnet vboxmanage modifyvm Linux-sql2 -nic1 intnet vboxmanage modifyvm Linux-sql2 -intnet1 testnet vboxmanage modifyvm Linux-mgmt -nic1 intnet vboxmanage modifyvm Linux-mgmt -intnet1 testnet 각 노드의 네트워크 설정 • - 각각의 노드에 내부 네트워크에서 사용될 고정 아이피를 할당한다. - 사용하는 Linux배포판의 규칙에 따르고, CentOS의 경우 /etc/sysconfig/network-scripts/ifcfg-eth0 파일을 편집한다. - 다음은 Management 노드의 설정예이다. DEVICE=eth0 ONBOOT=yes BOOTPROTO=none NETMASK=255.255.255.0 IPADDR=192.168.1.1 USERCTL=no PEERDNS=yes GATEWAY=192.168.40.42 TYPE=Ethernet IPV6INIT=no Data 노드(NDBD) 설치 & 설정 데이터 노드는 linux-ndbd1(192.168.1.11), linux-ndbd2(192.168.1.12) 이다. • 데이터 노드에서는 NDBD 프로세스가 실행되어야 한다. • MySQL 바이너리의 압축을 풀어 /usr/local/mysql 에 복사한다. • 설정파일 편집 • shell> vi /etc/my.cnf 데이터 노드 /etc/my.cnf • [MYSQLD] # NDB storage engine ndbcluster # IPADDR of management server ndb-connectstring=192.168.1.1
    • SQL 노드(MYSQLD) 설치 & 설정 SQL 노드는 Data노드와 유사한 설치 과정을 거친다. 그러나 반드시 MySQL 데이터 • 베이스의 초기화 스크립트로 서버를 초기화하여 클라이언트로 연결이 가능한지 확 인한다. SQL 노드도 /usr/local/mysql 에 설치한다. • 설정파일 편집 • shell> vi /etc/my.cnf SQL 노드의 /etc/my.cnf • [MYSQL_CLUSTER] # IPADDR of management server ndb-connectstring=192.168.1.1 Management 노드 설치 & 설정 ROOT 사용자로, • 설치 • shell> mkdir /usr/local/mysql-cluster shell> cp /usr/local/src/mysql-5.1.18-beta-pc-linux-gnu-i686/bin/ndb_mgm* /usr/local/mysql-cluster/ 설정 • shell> vi /usr/local/mysql-cluster/config.ini Management 노드의 /usr/local/mysql-cluster/config.ini • [NDBD DEFAULT] NoOfReplicas=2 DataMemory=10M IndexMemory=5M # mgm node [NDB_MGMD] hostname=192.168.1.1 datadir=/var/lib/mysql-cluster # data node1 [NDBD] hostname=192.168.1.11 datadir=/usr/local/mysql/data # data node2 [NDBD] hostname=192.168.1.12 datadir=/usr/local/mysql/data # SQL node1 [MYSQLD] hostname=192.168.1.21
    • # SQL node2 [MYSQLD] hostname=192.168.1.22 위 설정에서, MySQL Cluster는 기본적으로 데이터와 인덱스를 모두 메모리에 저장 • 하기 때문에 Data노드에서 사용할 데이터 영역과 인덱스 영역의 크기 (DataMemory?=10M, IndexMemory?=5M)를 지정하였다. MySQL 클러스터 시작하기 클러스터를 처음 시작하기 위해서는 다음과 같은 과정을 거친다. • Management 노드 프로세스를 실행 (as root) • shell> ndb_mgmd -f /usr/local/mysql-cluster/config.ini Data 노드의 NDBD 프로세스 시작 (as mysql) • shell> cd /usr/local/mysql/bin shell> ndbd --initial --initial 옵션에 주의한다. 클러스터를 처음 시작하거나 설정 파일이 변경된 경우만 • 이 옵션을 사용한다. 이 옵션은 데이터 영역을 초기화 한다. SQL 노드 프로세스 시작 (as mysql) • shell> cd /usr/local/mysql shell> ./bin/mysqld_safe --user=mysql &
    • MySQL Cluster 상태 확인 Management 노드의 ndb_mgm 유틸리티를 사용하여 클러스터의 상태를 확인할 수 있 • 다. MySQL Cluster 사용하기 테스트용 테이블 생성 • mysql> create table t (id int not null auto_increment, value varchar(300), primary key (id)) ENGINE NDB DEFAULT CHARSET=UTF8; MySQL Cluster 테이블 생성시 반드시 스토리지 ENGINE 타입을 'NDB' 또는 • 'NDBCLUSTER'로 지정한다.
    • MySQL Cluster 정지하기 MySQL 클러스터를 정지하고자 할 때는 다음과 같이한다. •
    • Management 노드 정지 • shell> ndb_mgm -e shutdown - Data 노드와 Management 노드를 정지한 후, SQL 노드를 정지한다. SQL 노드 정지 • shell> mysqladmin -uroot shutdown MySQL Cluster Disk Data Tables 기본적으로 MySQL Cluster는 데이터와 인덱스를 모두 메모리에 저장한다. 그러나, • MySQL 5.1.6이상부터 데이터를 디스크에 저장하는 기능을 제공한다. (* 주의할 사항 은, Disk data table도 인덱스는 메모리에 저장한다.) Disk Data Table 만들기 • 로그그룹을 생성하고 undo로그 파일을 할당한다. • mysql> CREATE LOGFILE GROUP lg_1 ADD UNDOFILE 'undo_1.dat' ENGINE NDB; 테이블스페이스를 생성하고 로그파일 그룹과 데이터 파일을 할당한다. • mysql> CREATE TABLESPACE ts_1 ADD DATAFILE 'data_1.dat' USE LOGFILE GROUP lg_1 ENGINE NDB; Disk Data table을 생성한다. 위에서 생성한 테이블스페이스를 데이터 영역으로 사용 • 한다. mysql> CREATE TABLE dt ( id int not null auto_increment, value varchar(300), primary key (id) ) TABLESPACE ts_1 STORAGE DISK ENGINE NDB DEFAULT CHARSET=UTF8;