[centos7] NDB Cluster 구성

배찌 (배찌)·2023년 3월 16일
0

설치 기록

목록 보기
12/12

개인 프로젝트를 위해서 만들고 있다.

Node

MGM node (2개)

  • 구성 : managment, sql
  • 사양 : 2v cpu, 8gb ram, 100gb hdd
  • ip : 192.168.0.100, 192.168.0.101

Data node (2개)

  • 구성 : Data node
  • 사양 : 1v cpu, 2gb ram, 200gb hdd
  • ip : 192.168.0.200, 192.168.0.201

서비스 구성 목적

데이터베이스의 가용성 향상

모든 노드 공통

레포지터리 추가

rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

클러스터 레포지터리 허용

vi /etc/yum.repos.d/mysql-community.repo

yum list | grep -i mysql-cluster

MGM node

manager, sql 설치

yum -y install mysql-cluster-community-management-server mysql-cluster-community-server

디렉토리 생성

mkdir /var/lib/mysql-cluster

클러스터 파일 생성

vi /var/lib/mysql-cluster/config.ini
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M

[ndb_mgmd]
NodeId=1
HostName=192.168.0.100

[ndb_mgmd]
NodeId=2
HostName=192.168.0.101

[ndbd]
NodeId=3
HostName=192.168.0.200

[ndbd]
NodeId=4
HostName=192.168.0.201

[mysqld]
NodeId=50
HostName=192.168.0.100

[mysqld]
NodeId=51
HostName=192.168.0.101

공홈에서 가장 기본적인 설정 파일을 가져왔다.
기본적으로 mysql에서 사용하는 포트는 다음과 같다.

하지만 내용을 찾아보니 cluster 통신 포트를 제외한 모든 포트는 랜덤 포트로 통신하게 된다.

방화벽을 끄고 허용 ip로 접근 제어를 해야거나 혹은 다음과 같이 특정 port를 지정해주면 된다.

[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
ServerPort = 2202
Portnumber=2200

[ndb_mgmd default] 
PortNumber=1186

[ndb_mgmd]
NodeId=1
HostName=192.168.0.100

[ndb_mgmd]
NodeId=2
HostName=192.168.0.101

[ndbd]
NodeId=3
HostName=192.168.0.200

[ndbd]
NodeId=4
HostName=192.168.0.201

[mysqld]
NodeId=50
HostName=192.168.0.100

[mysqld]
NodeId=51
HostName=192.168.0.101

mgmd 시작

ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

NDB cluster 확인

ndb_mgm -e show

sql 설정

vi /etc/my.cnf
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.100,192.168.0.101


[mysql_cluster]
ndb-connectstring=192.168.0.100,192.168.0.101

Sql 시작

systemctl start mysqld

Data Node

yum -y install mysql-cluster-community-data-node

ndbd 실행하기

ndbd --connect-string="nodeid=[해당 data-node id];host=[data-node ip]:[mgm port]"

예시

ndbd --connect-string="nodeid=3;host=192.168.0.100:1186"

상태 확인


정상적으로 클러스터가 구성되는것을 볼수가 있다.

데이터 동기화 확인

우선 사전에 이야기 할것이 있는데 root@localhost의 경우 패스워드가 공유되지 않는다.

SQL Node

cat /var/log/mysqld.log | grep 'temporary password'

mysql -u root -p
alter user 'root'@'localhost' identified by '변경할 비밀번호';

테이블 생성

 CREATE DATABASE mydb;
 use mydb
 CREATE TABLE mytable ENGINE=NDB;


정상적으로 두개의 sql에서 자동으로 데이터베이스가 만들어지는것이 공유되는것이 보인다.

여기서 ENGINE=NDB을 사용하지않으면 데이터가 공유되지 않지만 현재 mgm에서 레플리카 2로 설정했기 때문에 현재 데이터가 미러링 상태가 되어 ENGINE=NDB을 사용하지않고 기본 InnoDB로 사용하여도 똑같이 공유되는것처럼 보인다.

기본 엔진 변경

my.cnf 파일의 [myslqd]란에 해당 내용을 추가한다.

default_storage_engine=NDB

확인

SHOW VARIABLES LIKE 'default_storage_engine';

profile
Never give up Impossible is nothing

0개의 댓글