저번에 Mariadb replication을 하고 이번에는 galera cluster로 구성하는 것을 해보았다.
전에 사용했던 demo 07, demo 08의 replication 설정을 초기화 하고, 실습 진행했다.
위와 같은 특징으로 DBMS 클러스터링에 몇가지 장점이 있다.
먼저 이해를 돕기위해 나오는 용어에 대해서 설명하자면.
서버마다 각각의 MariaDB 서비스가 있는데 서버 마다 각각 하나 혹은 다수를 galera cluster node로 만들수 있다.
cluster node로 쓸 mariadb 하나를 정해서 클러스터를 생성하고, 생성된 클러스터의 address를 통해 clustering 멤버에 편입 시킬수 있다.
그렇게 같은 클러스터링 멤버인 각각의
mariadb 10.4 이상의 최신 버전부터는 galera-4
yum install galera-4
mariadb 10.3 이하의 버전에서는 galera
yum install galera
설치 한다.
/etc/my.cnf.d/server.cnf
해당 파일을 configuring 하게 된다.
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address='gcomm://' # 'gcomm://' 하드코딩 하지 말아야함. 이미 존재하는 클러스터에 대해서만 포함되고 싶은 클러스터 주소만 입력.
wsrep_cluster_name='cluster' # wsrep 클러스터 이름
wsrep_node_address='192.168.203.201' # 해당서버 ip
wsrep_node_name='garela01' # wsrep 노드 이름
wsrep_sst_method=rsync # SST 메서드 rsync 로 설정
binlog_format=row # binlog 포맷 row
default_storage_engine=InnoDB # default engine
innodb_autoinc_lock_mode=2 # 2 interleaved lock 모드
여기서 부트스트래핑은 우리가 흔히 알고있는 부팅과 같은 말이다.
초기설정을 시작전에 불러드리는 단계로 위의 configuring 한 것을 시작전에 적용하는 역할을 한다.
부트스트래핑을 통해서 cluster를 초기화하고, 바꾼 설정들을 통해서 새로운 클러스터를 생성한다.
--wsrep-new-cluster
옵션 을 사용하면 노드에 대해서 재시작했을때, 전에 있던 클러스터는 연결이 안되고 새로운 클러스터에 연결되게 된다.
매뉴얼 적으로는 아래 명령어를 사용하지민
mysqld --wsrep-new-cluster
systemd 명령어를 통해서 mysqld를 실행 시키는 경우도 있기에 서로 명령어가 다르다.
galera_new_cluster
demo08
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address='gcomm://192.168.203.201' # 생성한 클러스터의 ip가 demo07의 ip이므로 x.x.x.201 작성하였음
wsrep_cluster_name='cluster' # 클러스터 demo07거랑 이름 통일
wsrep_node_address='192.168.203.202' # 해당 demo08 ip
wsrep_node_name='galera02' # node이름 galera02
wsrep_sst_method=rsync # sst (상태 스냅샷 전송) rsync 모드
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
클러스터를 재시작 하면된다.
모든 노드를 동시에 종료시키면 효과적으로 클러스터를 없앨수 있다. 물론 클러스터 데이터는 아직 존재할 것이고, 하지만 실행중인 클러스터는 더이상 존재하지 않을것이다. 이런일이 일어났을때, 다시 클러스터에 부트스트랩을 해줘야한다.
만약 클러스터의 첫째 노드가 적당히 적당히 보통방법으로 실행됐다면, 노드는 wsrep_cluster_address
옵션 값안의 적어도 하나에는 연결하려고 할거다. 만약 아무 노드도 현재 실행되는게 없다면, 실행은 실패할 것이다.
첫째 노드를 부트스트래핑 해주면 된다.
SST 설정에서는, 클러스터는 한 노드에서 다른노드로 풀 데이터 카피 전송하는 것을 제공해준다. 새로운 노드가 정의 될때 SST는 데이터를 이미 클러스터 멤버에 속한 노드를 동기화 시킨다.
$ wsrep_sst_method = {method_name} #default rsync
show databases;
create database galera_test; # galera_test라는 database 생성
show databases; # 현재 database들 조회
https://mariadb.com/kb/en/getting-started-with-mariadb-galera-cluster/
해당 문서 보고 따라했습니다 ㅎㅎㅎ
혹시 참고 링크 부탁해도 될까요