DB/MySql(& MariaDB)

MariaDB 클러스터링 1탄 (public IP로 클러스터링)

wooki4307 2020. 6. 5. 17:17

MariaDB에 Galera를 사용해서 클러스터링하여 DB서버 안정화!

 

1. 작업 환경

 - OS: Oracle Linux 7.8

 - DB: MariaDB 10.4 / Galera-4

 - Internal(내부망 IP) 는 추후 업로드 예정! 현재 게시물은 Public 기준!

 

2. Oracle Linux 선정 배경

 - Oracle Linux는 Red Hat 계열로 무료여서 라이센스 비용 발생 안함.

 - 설치법은 추후 업로드 진행 예정!

 

3. 사전 세팅

 - yum 설치

 - 방화벽 오픈

 - Util 설치

 

 3-1. yum 설치 항목

    - MariaDB-server

    - MariaDB-client

    - MariaDB-shared

    - MariaDB-backup

    - MariaDB-common

    - MariaDB-cracklib-password-check

    - psmisc

    - policycoreutils-python

    - socat

    - telnet-server

    - telnet

    - net-tools

 

 

  3-2. 오픈 방화벽

     - TCP: 3306 / 4444 / 4567 / 4568

     - UDP: 4567

     - 방화벽 오픈 방법

       > firewalld 사용.

       > 1) /etc/firewalld/service/ 하위에 xml 내용 추가.

         

Galera 용 방화벽 
MariaDB 방화벽

       > 2) /etc/firewalld/zones/public.xml

             파일 연 후 service 목록 추가

       > 3) firewall-cmd --realod ( 방화벽 설정 사항 적용 )

 

4. MariaDB 설치

     - curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

       > 해당 명령어 실행하여 MariaDB 다운로드

     - systemctl start mariadb ( 실행명령어는 다를 수 있음! )

     - mariadb -u root -p

     - delete from mysql.user where user='';

     - grant all on *.* to 'root'@'%' identified by 'password';

     - grant usage on *.* to sst_user@'%' identified by 'password';

     - grant all privileges on *.* to sst_user@'%';

       > root 계정의 패스워드 설정 해 준 후 클러스터링을 위한 DB 사용 계정 세팅해준다. 

       > 클러스터링 계정은 임의로 변경해서 사용 가능, 추후 DB세팅에서도 똑같이 적용해줘야함.

     - exit

     - systemctl stop mariadb

 

5. MariaDB 세팅값 변경

server.cnf 파일 수정( 초록색: DB서버1 , 노란색: DB서버2)

     > 세팅값 설명

     > wsrep_cluster_address: 클러스터링 진행할 IP 목록을 의미한다. 현재 서비스되는 유일한 schema는 gomm

                                      <backend schema>://<cluster address>[?option1=value1[&option2=value2]]

     > wsrep_cluster_name: 클러스터링 진행될 때 체크하는 이름으로 유일한 값으로 지정해야하고 클러스터링 서버 전체 동일해야한다.

     > wsrep_node_address: 해당 서버의 IP를 적어준다.

     > wsrep_node_name: 해당 클러스터링이 진행될 노드 명 적어줌.

     > wsrep_sst_method: 클러스터링 사용되는 메소드 지정.

     > wsrep_sst_receive_address: 클러스터링 백업 진행시 수신 받는 메소드의 주소.

     > 상세 설명 및 참조 사이트: https://galeracluster.com/library/documentation/mysql-wsrep-options.html

 

MySQL wsrep Options — Galera Cluster Documentation

MySQL wsrep Options These are MySQL system variables introduced by wsrep API patch version 0.8. Almost all of the variables are global except for a few. Those are session variables. If you click on a particular variable in this table, your web browser will

galeracluster.com

6. 실행 방법 및 확인

     > 처음 실행시(서버1): galera_new_cluster 명령어로 실행해야한다. 해당 명령어가 아니면 클러스터링 진행을 안함.

     > 그다음 모든 실행: systemctl start mariadb ( 서버1 다운시 재구동시에도 해당 명령어 이용 )

     > 클러스터링 확인

     > SHOW STATUS LIKE 'wsrep_cluster_%'; -- 서버 대수 만큼 나오면 성공!

        > wsrep_cluster_size: 서버 개수

        > wsrep_cluster_status: connected

     > 직접 확인은 DB에 Schema 생성시 두 서버 동일하게 생성이 되는 사항 확인이 가능합니다.

 

7. 참고 문서 및 사이트

     > Galera      : https://galeracluster.com/library/documentation/mysql-wsrep-options.html

     > MariaDB   : https://mariadb.com/kb/en/mariadb-connectorc-api-functions/