'이중화'에 해당되는 글 2건

  1. 2017.03.06 MariaDB 이중화 설치 방법 #2
  2. 2017.02.15 MariaDB 이중화 설치 방법 #1

4. MySQL 설정

아래는 MySQL 설정 파일입니다.

shell) vim /etc/my.cnf.d/server.cnf  

아래를 참고하여 수정합니다. 단 아이디는 위에 생성한 아이디와 일치시키고, NODE01/02는 각 노드의 IP를 적습니다.

[A] NODE01 서버

[mysqld]

wait_timeout=2147483

skip-name-resolve

max_allowed_packet=128M

[galera]

wsrep_on=ON

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

wsrep_node_address=NODE01

wsrep_node_name=NODE01

wsrep_sst_method=rsync

wsrep_sst_auth=[mariauserd:mariauserd]

wsrep_sst_receive_address=NODE01

innodb_flush_log_at_trx_commit=2

binlog_format=ROW

bind-address=0.0.0.0

binlog_format=ROW

default-storage-engine=innodb

innodb_autoinc_lock_mode=2

innodb_locks_unsafe_for_binlog=1

wsrep_cluster_address='gcomm://NODE02'

server_id=1

[B] NODE02 서버

[mysqld]

wait_timeout=2147483

skip-name-resolve

max_allowed_packet=128M

[galera]

wsrep_on=ON

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

wsrep_node_address=NODE02

wsrep_node_name=NODE02

wsrep_sst_method=rsync

wsrep_sst_auth=[mariauserd:mariauserd]

wsrep_sst_receive_address=NODE02

innodb_flush_log_at_trx_commit=2

binlog_format=ROW

bind-address=0.0.0.0

binlog_format=ROW

default-storage-engine=innodb

innodb_autoinc_lock_mode=2

innodb_locks_unsafe_for_binlog=1

wsrep_cluster_address='gcomm://NODE01'

server_id=1

5. NODE01/02 자동시작 삭제 및 시작테스트

[A] NODE01 서버

shell) chkconfig --del mysql  
shell) service mysql start --wsrep-new-cluster --wsrep-cluster-address="gcomm://"

[B] NODE02 서버

shell) chkconfig --del mysql
shell) service mysql start

6. 기본 DB Schema/Data가 있다면 넣어주기

shell) mysql –umariauser –pmariauser < ./SampleDB.sql

7. 자동실행 파일 작성 및 설정

아래와 같이 자동실행 파일을 생성합니다. 첨부파일 내용은 상황에 맞게 수정합니다. 아래 'galera 실행화일'을 /etc/init.d/galera에 생성합니다. 주의사항은 NODE01 또는 NODE02가 살아나는 시차가 있어야 합니다. (왜냐하면 처음 살아나는 노드가 MASTER가 되도록 설정하였기 때문입니다 아래 적색 부분과 같이 한개 노드에만 시차를 주어도 좋습니다.) 또 아래 NODE02라고 써진 부분은 상대편 노드 IP를 적습니다.

* galera 실행화일 (/etc/init.d/galera)

#!/bin/bash

### BEGIN INIT INFO
# Provides:        galera-mysql
# Short-Description: Start/Stop galera server
# chkconfig: 345 99 10
# description: galera service scri
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin

start() {
  sleep 20
  r=$(bash -c 'exec 3<> /dev/tcp/NODE02/3306;echo $?' 2>/dev/null)
  if [ "$r" = "0" ]; then
      echo The database on the other node is running.
      /etc/rc.d/init.d/mysql start
  else
      echo The database on the other node is not running
      /etc/rc.d/init.d/mysql start --wsrep-cluster-address='gcomm://'
  fi
}

stop() {
 sh /etc/rc.d/init.d/mysql stop

}

status() {
 sh /etc/rc.d/init.d/mysql status
}

case $1 in
  start|stop|status) $1;;
  restart) stop; start;;
  *) echo "Run as $0 "; exit 1;;
esac 

[A] NODE01 서버

shell) cp galera.node01 /etc/init.d/galera
shell) chmod 775 /etc/init.d/galera
shell) chkconfig --add galera

[B] NODE02 서버

shell) cp galera.node02  /etc/init.d/galera
shell) chmod 775 /etc/init.d/galera
shell) chkconfig --add galera

8. 상태체크 및 기타사항

8.1 서버 강제종료/다운 후 시작이 안되는 경우

shell) vim /var/lib/mysql/grastate.dat
safe_to_bootstrap: 1      // 0으로 변경

8.2 장애복구 시 참고 사이트

https://www.percona.com/blog/2014/09/01/galera-replication-how-to-recover-a-pxc-cluster/


감사합니다.

Posted by kkckc
,

0. 시작하면서

 이 문서는 galera를 이용하여 MariaDB는 이중화를 지원하는 방법을 기술합니다. 내용은 Centos 5에서 테스트되었습니다. 기본적으로 Galera는 Active-Active 구조로 이중화를 지원하지 않고, 홀수개의 DB를 설치할 경우 다수결의 원칙에 의해 신뢰할 수 있는 노드를 선택합니다. 이에, 이중화(2개 노드 사용) 사용시는 어플리케이션 단에서 충분한 테스트 및 관리가 필요합니다.


1. 기존 MariaDB 제거하기 (1번 2번 노드 공통)

- MariaDB Server가 이미 설치되어 있는지 확인하기

$ rpm -qa | grep Maria
조회가 되면 서버에 한해서만 설치 제거(dependency로 인해 삭제가 안되는 경우에는 –nodeps 옵션을 사용합니다.)
$ rpm -e  MariaDB-server-10.0.15-1

- 기존 MySQL이 설치된 경우 제거하며, MariaDB Client는 제거하지 않습니다.


2. RPM 설치하기 (1번 2번 노드 공통)

아래와 같이 RPM을 구해서 설치하거나, yum을 사용하여 설치합니다.

(https://mariadb.com/kb/en/mariadb/yum/#installing-mariadb-galera-cluster-with-yum)

Shell) rpm -Uvh MariaDB-* galera-25.3.18-1.rhel5.el5.i386.rpm perl-DBI-1.52-2.el5.x86_64.rpm

# RPM 목록은 다음과 같습니다.
MariaDB-Galera-10.0.28-centos5-i686-server
MariaDB-Galera-10.0.28-centos5-i686-test
MariaDB-10.0.28-centos5-i686-common
MariaDB-10.0.28-centos5-i686-client
galera-25.3.18-1.rhel5.el5.i386
perl-DBI-1.52-2.el5.x86_64


3. 기본 유저 생성하기 (1번 2번 노드 공통)

첨부파일을 참고하여 아래와 같이 유저를 생성합니다. 첨부파일 내용은 상황에 맞게 수정합니다.

아래 Sample 파일은 mariauser/mariauser라는 사용자 아이디/패스워드와 동기화를 위한 mariauserd/mariauserd 계정 및 권한을 생성합니다.

shell) service mysql start
shell) mysql –uroot –p < ./DEF_USER.sql
shell) service mysql stop

DEF_USER.sql

* 다음편에는 Mysql 설정파일 변경 및 자동실행 등에 대해서 다루겠습니다.


Posted by kkckc
,