시스템/리눅스 서버

MariaDB Galera Cluster 10.0 설치 (CentOS6.6)

판베 2015. 6. 1. 14:10

MySQL를 사용하는 시스템에서 이번에 MariaDB로 변경하는 프로젝트가 진행되려고 하고 준비중입니다. 기왕 준비하는 것이라면 기존에 MySQL이 이중화 되어 있지 않던 것도 같이 해서 이중화 및 MariaDB로 변경하는 것으로 프로젝트를 진행함에 따라 MariaDB 테스트를 진행합니다.

 

1. 먼저 SELINUX를 permissive mode 로 변경 처리 해야 합니다.

 # sudo setenforce 0 

 

(위와 같이 했을 경우 재부팅 시에 적용이 풀리는 단점이 있어 아래와 같이 설정도 추가합니다.)

 # vi /etc/sysconfig/selinux

SELINUX=enforcing  부분을
SELINUX=Permissive 변경

 

2. MariaDB를 yum으로 설치할 수 있도록 MariaDB repository 설정합니다.

 # vi /etc/yum.repos.d/MariaDB.repo 

 

아래의 문구를 삽입 후 저장합니다.

# MariaDB 10.0 CentOS repository list - created 2014-07-02 22:44 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1 

 

MariaDB가 개발이 계속적으로 발생하기 때문에 버전업이 빠릅니다. 아래의 사이트를 통해서 리포지토리 정보를 받으실 수 있습니다.

https://downloads.mariadb.org/mariadb/repositories/#mirror=kaist&distro=CentOS&distro_release=centos6-amd64&version=10.1 

  

3. MariaDB Galera Cluster 10.0 설치

 # sudo yum install MariaDB-Galera-server MariaDB-client rsync galera 

 

참고! 저는 설치 과정 중에 Requires: socat 메시지로 설치가 오류가 나왔습니다.

socat rpm을 추가적으로 설치를 먼저 하시고 설치 하여 주시면 됩니다.

# wget http://pkgs.repoforge.org/socat/socat-1.7.2.4-1.el6.rf.x86_64.rpm
# rpm -ivh socat-1.7.2.4-1.el6.rf.x86_64.rpm 

 

4. MariaDB Galera Cluster 10.0 구성

클러스터 구성이기 때문에 양쪽으로 서버에 모두 설치가 완료되었다면 이제 통합 구성을 해야 합니다. 아래의 구성은 양쪽다 동일하게 하시기 바랍니다.

# sudo service mysql start
# sudo /usr/bin/mysql_secure_installation 

 

# mysql -u root -p
MariaDB> DELETE FROM mysql.user WHERE user='';
MariaDB> GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'mariadb';
MariaDB> GRANT USAGE ON *.* to sst_user@'%' IDENTIFIED BY 'dbpass';
MariaDB> GRANT ALL PRIVILEGES on *.* to sst_user@'%';
MariaDB> FLUSH PRIVILEGES;
MariaDB> quit 

 

위에 패스워드 부분은 편의상 쉽게 했습니다. 상용 서버에서 사용하실 것이라면 좀더 복잡하게 하시면 좋을 것 같습니다. 추가적으로 sst_user를 통해서 양쪽 클러스터를 동기화 시킵니다. 위에 동기화 계정을 % 로 한것도 사용상 편의를 위한 것으로 상용 서버에서는 양쪽 서버의 IP로 설정하시는 것이 보안상 좋습니다.

 

# sudo service mysql stop 

 

5. Node1(DB서버 중에 한개)에서 아래의 설정을 진행합니다.

 # vi /etc/my.cnf.d/server.cnf 

 

binlog_format=ROW

default-storage-engine=innodb innodb_autoinc_lock_mode=2

innodb_locks_unsafe_for_binlog=1

query_cache_size=0

query_cache_type=0

bind-address=0.0.0.0

 

datadir=/var/lib/mysql innodb_log_file_size=100M

innodb_file_per_table innodb_flush_log_at_trx_commit=2

wsrep_provider=/usr/lib64/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://Node1IP,Node2IP"

wsrep_cluster_name='galera_cluster'

wsrep_node_address='Node1IP'

wsrep_node_name='db1'

wsrep_sst_method=rsync

wsrep_sst_auth=sst_user:dbpass

위의 붉은 글씨에 대한 부분을 설정합니다.

 

Node2 에서는 Node1에서 설정과 동일하게 하되 아래의 부분만 Node2에 맟춰서 설정합니다.

wsrep_node_address='Node2IP'
wsrep_node_name='db2

 

6. 클러스터 최초 실행

Node1에서 아래의 명령어로 DB1을 구동합니다.

# sudo /etc/init.d/mysql start --wsrep-new-cluster 

 

(위의 명령어는 클러스터를 최초 실행할 경우에만 사용하는 명령어입니다.)

 

6-1. 클러스터 상태 확인

# mysql -u root -p -e "show status like 'wsrep%'" 

 

아래와 같이 확인이 되는지 확인합니다.

wsrep_local_state_comment | Synced <-- cluster is synced

wsrep_incoming_addresses | 10.0.0.9:3306 <-- node db1 is a provider

wsrep_cluster_size             | 1 <-- cluster consists of 1 node

wsrep_ready                      | ON <-- good :)

 

wsrep_cluster_size 값은 현재 구동중인 Node가 몇개이냐의 의미입니다. 지금은 단독 실행이기 때문에 1로 표기되어야 맞습니다.

 

7. 추가 클러스터를 구동합니다.

Node2에서 구동합니다.

# sudo service mysql start 

 

7-1 클러스터 상태 확인

# mysql -u root -p -e "show status like 'wsrep%'"

 

wsrep_cluster_size 값이 2로 되어 있다면 정상입니다.

 

TIP

MariaDB 개발사에서는 MariaDB Galera Cluster에 대해 3대 이상의 Node를 권장하고 있습니다. 2대의 Node로도 충분히 구성은 가능합니다만, 개발사의 권장사항은 3대 이상의 Node입니다.