티스토리 뷰
개요
- mariadb의 Synchronous 방식 다중 마스터 클러스터입니다.
- Active-Active 방식의 다중 마스터 구성 - 모든 노드에서 읽기/쓰기가 가능
- 클러스터 내 노드 자동 컨트롤 - 특정 노드 장애 시 자동으로 해당 노드 제거
- 자동으로 신규 노드 추가
- 완벽하게 병렬적으로 데이터를 횡단 위로 복제
- 기존은 MySQL 클라이언트 방식으로 동작
제한 사항과 알려진 이슈
- InnoDB 만 정상적으로 지원한다. MyISAM 은 실험적으로만 지원중이다.
- ROW 데이터 기반으로 복제가 이루어지기 때문에 반드시 Primary Key가 있어야 한다.
- 최대 가능한 트랜잭션 사이즈는 wsrep_max_ws_rows와 wsrep_max_ws_size에 정의된 설정 값에 제약을 받으며,
데이터 파일 로드 처리 시 매 1만 건 커밋이 자동으로 이루어진다. - 트랜젝션 유효성이 커밋되는 시점에서 이루어지며, 동일한 행에 두 개의 노드에서 데이터 변경을 시도한다면 오직 하나의 노드에서만 데이터 변경이 가능하다.
- 원거리 리플리케이션의 경우 커밋에 대한 응답 요청으로 인하여 전반적인 시스템 성능 저하가 발생한다.
설치
CentOS6.5에서 설치하였습니다.
# yum install scons boost-devel check-devel
# wget http://releases.galeracluster.com/source/galera-3-25.3.10.tar.gz
# tar xvfz galera-3-25.3.10.tar.gz
# cd galera-3-25.3.10
# scons
# mkdir /usr/lib64/galera/
# cp libgalera_smm.so /usr/lib64/galera/.
# wget https://downloads.mariadb.org/interstitial/mariadb-galera-10.0.17/source/mariadb-galera-10.0.17.tar.gz/from/http%3A//ftp.kaist.ac.kr/mariadb
# tar xvfz mariadb
# cd mariadb-10.0.17
# cmake . \
-DCMAKE_INSTALL_PREFIX:PATH=/usr/mariadb-galera \
-DMYSQL_DATADIR:PATH=/usr/mariadb-galera/data \
-DDEFAULT_SYSCONFDIR:PATH=/usr/mariadb-galera/etc \
-DBUILD_CONFIG:STRING=mysql_release \
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
-DWITH_SSL:STRING=system \
-DWITH_READLINE:BOOL=ON \
-DWITH_DEBUG:BOOL=OFF \
-DWITH_EXTRA_CHARSETS:STRING=all \
-DWITH_LIBEDIT:BOOL=OFF \
-DENABLE_LOCAL_INFILE:BOOL=ON \
-DWITH_INNOBASE_STORAGE_ENGINE:BOOL=ON \
-DWITH_ARCHIVE_STORAGE_ENGINE:BOOL=ON \
-DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON \
-DWITH_JEMALLOC:BOOL=ON \
-DWITH_EMBEDDED_SERVER:BOOL=ON
# make
# make install
# useradd -r -s /sbin/nologin -d /usr/mariadb-galera mysql
# /usr/mariadb-galera/scripts/mysql_install_db --user=mysql
# chown -R mysql.mysql /usr/mariadb_galrea/data
# mkdir /usr/mariadb-galera/etc
# cp /usr/mariadb-galera/support-files/my-huge.cnf /usr/mariadb-galera/etc/my.cnf
# cp /usr/mariadb-galera/support-files/mysql.server /etc/init.d/mariadb-galera
# echo "/usr/mariadb-galera/lib" > /etc/ld.so.conf.d/mariadb-galera.conf
# ldconfig
클러스터 계정 생성
# mysql -u root -p
mysql> DELETE FROM mysql.user WHERE user='';
mysql> GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'dbpass';
mysql> GRANT USAGE ON *.* to sst_user@'%' IDENTIFIED BY 'dbpass';
mysql> GRANT ALL PRIVILEGES on *.* to sst_user@'%';
mysql> FLUSH PRIVILEGES;
mysql> quit
my.cnf 설정
기본적인 설정은 동일하지만
- server-id는 cluster 서버 별로 다르게 구성되어야 합니다.
- wsrep_cluster_address는 cluster 서버 아이피를 ","로 구분해서 입력해야 합니다.
- wsrep_node_adderss는 cluster 별로 로컬 아이피를 적어주어야 합니다.
- wsrep_mode_name는 cluster 별로 별칭을 적어주어야 합니다.
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.169.0.1,192.169.0.2"
wsrep_cluster_name='galera_cluster'
wsrep_node_address='192.169.0.2'
wsrep_node_name='db1'
wsrep_sst_method=rsync
wsrep_sst_auth=sst_user:dbpass
서버 실행
- 서버 시작은 master 클러스터와 slave 클러스터를 구분하여 시작합니다.
- 클러스터 서버 중에서 master 클러스터가 될 서버에서는 /etc/init.d/mariadb-galera start --wsrep-new-cluster를 실행해줍니다.
- 나머지 slave 클러스터 서버에서는 /etc/init.d/mariadb-galera start를 실행해줍니다.
- 실행 후 master 클러스터에서 /usr/mariadb-galera/bin/mysql -u root -p -e "show status like 'wsrep%'" 수행하면, 클러스터 상태를 확인할 수 있습니다.
참고
- https://mariadb.com/kb/en/mariadb/galera-cluster-system-variables/
- https://mariadb.com/kb/en/mariadb/galera-cluster-system-variables/#wsrep_cluster_address
- http://blog.laimbock.com/2014/07/08/howto-setup-mariadb-galera-cluster-10-on-centos/comment-page-1/
- http://gywn.net/2012/09/mariadb-galera-cluster/
- http://galeracluster.com/downloads/
'엔지니어링' 카테고리의 다른 글
Apache 접속 인증 추가 두가지 방법 (0) | 2020.03.24 |
---|---|
MySQL 슬로우 쿼리 분석(maatkit 사용법) (0) | 2020.03.13 |
Mariadb MaxScale 제한 사항과 알려진 이슈 (0) | 2020.03.07 |
Mysql 메타데이터 락 (0) | 2020.03.07 |
디스크 Write 성능 향상 (0) | 2020.03.07 |
댓글
warpmemory
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
페이지
TAG
- mysql
- Module
- 예제
- httpd
- File
- 명령어
- 코드
- MariaDB
- client
- error
- example
- apache
- Ansible
- check
- 외부링크
- Python
- 이슈처리
- configuration
- engineering
- command
- Windows
- Web
- PowerShell
- limits
- RESTful
- deview
- code
- 번역
- Linux
- monitoring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함