본문 바로가기

DS

MariaDB clustering

반응형


서버 환경 구성 은 아래와 같다. 


server-01  -> 1.1.1.1

server-02  -> 2.2.2.2

server-03 -> 3.3.3.3


selinux 설정 

#vi /etc/selinux/config

> 추가 selinux=disabled


각 서버 호스트 명 변경

#vi /etc/hosts

127.0.0.1  server-01 loccalhost.localdomain localhost


# vi /etc/sysconfig/network

HOSTNAME=server-01


#echo server-01 > /proc/sys/kernel/hostname


각 서버의 my.cnf 파일에 아래 내용들을 추가 한다.


1번째 서버 설정

#vi /etc/my.cnf


[galera]

wsrep_on=ON

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

wsrep_cluster_address='gcomm://'

wsrep_cluster_name='cluster_galera'

wsrep_node_address='1.1.1.1'

wsrep_node_name='server-01'

wsrep_sst_method=rsync

binlog_format=row

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

bind-address=0.0.0.0


1번째 서버를 아래 옵션으로 시작한다


# /etc/init.d/mysql start --wsrep_cluster_new

설정 확인

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

확인 사항: (아래와 같이 설정되어있으면 성공)

wsrep_cluster_size=1

wsrep_connected=ON

wsrep_incoming_addresses=1.1.1.1:3306

wsrep_local_state_comment=Synced

wsrep_ready=ON


2번째 서버 설정

#vi /etc/my.cnf

[galera]

wsrep_on=ON

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

wsrep_cluster_address='gcomm://1.1.1.1'

wsrep_cluster_name='cluster_galera'

wsrep_node_address='2.2.2.2'

wsrep_node_name='sever-02'

wsrep_sst_method=rsync

binlog_format=row

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

bind-address=0.0.0.0


2번째 서버 시작

#systemctl start mariadb


3번째 서버 설정

#vi /etc/my.cnf


[galera]

wsrep_on=ON

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

wsrep_cluster_address='gcomm://1.1.1.1'

wsrep_cluster_name='cluster_galera'

wsrep_node_address='3.3.3.3'

wsrep_node_name='server-03'

wsrep_sst_method=rsync

binlog_format=row

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

bind-address=0.0.0.0


3번째 서버 시작

#systemctl start mariadb



1번째 서버에서 클러스터링 재 확인

#ps -ef | grep mysql

mysql    23339     1  0 15:25 ?        00:00:01 /usr/sbin/mysqld --wsrep_start_position=00000000-0000-0000-0000-000000000000:-1

root     23884 17687  0 15:36 pts/0    00:00:00 grep --color=auto mysql


1번째 서버에서 아래명령으로 클러스터링 확인


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

확인 사항:

wsrep_connected=ON

wsrep_incoming_addresses = 3.3.3.3:3306,2.2.2.2:3306,1.1.1.1:3306

wsrep_local_state_comment   = Synced

wsrep_ready = ON


2번째 ,3번째 서버에서 확인

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



Galera 의 사용시 유의 사항:

auto_increment 가 증가하는 문제 발생함

즉 클러스터링 된 노드개수만큼씩 auto increment 함.

galera설정 에서 아래와 같이 설정 하면 된다.

[galera}

wsrep_auto_increment_control=off

하지만 위와 같이 설정하면 데드락 문제가 발생함 

        데드락 문제는 구글 신에게..난사용하지 않도록 함



Faile Over 테스트 :

각 서버들을 중지 시켰다가 다시 복구하면 데이터들이 그대로 복제가 되어있음.

Master server 가 down 되면 slave server 들중 랜덤? 으로 master 가 됨

down 된 master 서버를 복구 하려면?

vi /etc/my.cnf 

[galera] 

wsrep_cluster_address='gcomm://current_master_ip '

그리고 해당 서버는 

Issue:

다운된 서버에 대해서는 수동으로 복구 해야한다.자동 복구가 안된다.


다운된 서버 수동 복구 방법:

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

  wsrep_incoming_addresses 의 첫번째 주소를 확인 한다.

  다운된 서버의 my.cnf 를 수정한다.

  wsrep_cluster_address = 첫번째 주소를 입력 한다.

  mariadb 를 재시작 해본다.


마스터 서버가 죽을 경우 마스터를 자동으로 복구 하기 위한 설정을 위해서는 아래 사이트 참고

https://www.slideshare.net/junghaelee10/mariadb-58514643

반응형

'DS' 카테고리의 다른 글

Postgresql session issue 해결방법  (0) 2017.06.02
MariaDB Partioning  (0) 2017.06.02
Mariadb log 활성화  (0) 2017.05.31
DB size query  (0) 2017.05.30
MariaDB install and change datadir  (0) 2017.05.21