linux

centos 8 - galera + mariadb 설치

sysman 2021. 1. 7. 18:36

 

gluster cluster

오픈소스 

동기 방식 복제

노드간 wsrep으로 통신

active-active 다중 구성 및 모든 노드에 r/w 가능

노드컨트롤, 특정 노드 장애 시 자동 장애노드 제거

자동 신규노드 추가(신규노드 추가시 모든 데이터 복사)

 

wsrep : write set은 트랜잭션을 기록하는 모든 논리적 데이터 집합, 노드간 write set 전송 및 통신 위해 별도 복제 플러그인 사용, 복제 엔진은 wsrep에 정의된 call/callback 함수 사용

 

gluster 단점

-한 노드에서 데이터 디스크 저장하기 전에 다른 노드에 데이터 복제 요청, 비동기 방식에 비해 write 성능 떨어짐

-장애전파, 다른 노드 복제 요청 했는데 그 노드 응답 없으면 요청 노드 대기, 그러나 다른 s/w도 동일 문제

-확장한계 노드 많으면 복제 걸리는 시간, 비용 노드 수에 비례해서 늘어남

 

 

server2에서...

 

[root@server2 ~]# dnf -y install mariadb-server-galera

[root@server2 ~]# firewall-cmd --state
[root@server2 ~]# firewall-cmd --permanent --zone=public --add-service=mysql
[root@server2 ~]# firewall-cmd --permanent --zone=public --add-port={4567,4568,4444}/tcp
[root@server2 ~]# firewall-cmd --reload
[root@server2 ~]# firewall-cmd --list-all

 

[root@server2 ~]# setenforce 0   //잠깐 0으로 바꿧다가 세팅 끝나면 다시 1로 바꿈
[root@server2 ~]# getenforce
Permissive

 

[root@server2 ~]# cd /etc/my.cnf.d/

[root@server2 my.cnf.d]# cp mariadb-server.cnf mariadb-server.backup

[root@server2 my.cnf.d]# vi mariadb-server.cnf

[galera]

# Mandatory settings

wsrep_on=ON

wsrep_provider=/usr/lib64/galera/libgalera_smm.so                    //경로나 이름이 다를 수 있으니 확인하고 적용

wsrep_cluster_address=gcomm://192.168.10.210,192.168.10.220,192.168.10.230

binlog_format=row

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

 

 

[root@server2 my.cnf.d]# galera_new_cluster     //galera 적용하면 mariadb가 자동으로 데몬이 start 됨

[root@server2 my.cnf.d]# systemctl status mariadb

[root@server2 my.cnf.d]# systemctl enable mariadb

[root@server2 my.cnf.d]# mysqladmin -u root password root

 

[root@server2 my.cnf.d]# mysql -u root -p

Enter password:

MariaDB [(none)]> show global status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
1 row in set (0.001 sec)

 

MariaDB [(none)]> show status like 'wsrep_%';

 

MariaDB [(none)]> show databases;

 

[root@server2 ~]# setenforce 1  //다 설정 되면 다시1로 변경

 

server3에서....

[root@server3 ~]# dnf -y install mariadb-server-galera 

[root@server3 ~]# firewall-cmd --state 
[root@server3 ~]# firewall-cmd --permanent --add-service=mysql

[root@server3 ~]# firewall-cmd --permanent --add-port={4567,4568,4444}/tcp 
[root@server3 ~]# firewall-cmd --reload 
[root@server3 ~]# firewall-cmd --list-all 

 

[root@server3 ~]# setenforce 0 
[root@server3 ~]# getenforce 
Permissive 

[root@server3 ~]# cd /etc/my.cnf.d/

 

[root@server3 my.cnf.d]# cp mariadb-server.cnf mariadb-server.backup

[root@server3 my.cnf.d]# vi mariadb-server.cnf

[galera]

# Mandatory settings

wsrep_on=ON

wsrep_provider=/usr/lib64/galera/libgalera_smm.so                    //경로나 이름이 다를 수 있으니 확인하고 적용

wsrep_cluster_address=gcomm://192.168.10.210,192.168.10.220,192.168.10.230

binlog_format=row

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

 

[root@server3 my.cnf.d]# systemctl enable mariadb

[root@server3 my.cnf.d]# systemctl start mariadb

[root@server3 my.cnf.d]# mysqladmin -u root password root

[root@server3 my.cnf.d]# galera_new_cluster

[root@server3 my.cnf.d]# mysql -u root -p

Enter password: 

MariaDB [none]>create database test_table;

MariaDB [none]>use test_table;

MariaDB [none]>insert into test_table values(1);   //test 1만개 복사해서 넣기

 

 

MariaDB [test_db]> use test_db; 
Database changed 
MariaDB [test_db]> select count(*) from test_table; 


+----------+ 

 

 

server4에서....

[root@server4 ~]# dnf -y install mariadb-server-galera

[root@server4 ~]# firewall-cmd --state
[root@server4 ~]# firewall-cmd --permanent --add-service=mysql

[root@server4 ~]# firewall-cmd --permanent --add-port={4567,4568,4444}/tcp
[root@server4 ~]# firewall-cmd --reload
[root@server4 ~]# firewall-cmd --list-all

 

[root@server4 ~]# setenforce 0
[root@server4 ~]# getenforce
Permissive

[root@server4 ~]# cd /etc/my.cnf.d/

 

[root@server4 my.cnf.d]# cp mariadb-server.cnf mariadb-server.backup

[root@server4 my.cnf.d]# vi mariadb-server.cnf

[galera]

# Mandatory settings

wsrep_on=ON

wsrep_provider=/usr/lib64/galera/libgalera_smm.so                    //경로나 이름이 다를 수 있으니 확인하고 적용

wsrep_cluster_address=gcomm://192.168.10.210,192.168.10.220,192.168.10.230

binlog_format=row

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

 

[root@server4 my.cnf.d]# systemctl start mariadb

[root@server4 my.cnf.d]# systemctl enable mariadb

[root@server4 my.cnf.d]# mysqladmin -u root password root

 

 

[root@server4 my.cnf.d]# mysql -u root -p

Enter password:

 

MariaDB [test_db]> use test_db;
Database changed
MariaDB [test_db]> select count(*) from test_table;   //test한 것 실시간 카운터 확인

+----------+

 

 

#################################################################
######################      신규노드 추가         ########################

#################################################################

 

신규 노드 server1 추가

server4에서....

[root@server1 ~]# dnf -y install mariadb-server-galera 

[root@server1 ~]# firewall-cmd --state 
[root@server1 ~]# firewall-cmd --permanent --add-service=mysql

[root@server1 ~]# firewall-cmd --permanent --add-port={4567,4568,4444}/tcp 
[root@server1 ~]# firewall-cmd --reload 
[root@server1 ~]# firewall-cmd --list-all 

 

[root@server1 ~]# setenforce 0 
[root@server1 ~]# getenforce 
Permissive 

[root@server1 ~]# cd /etc/my.cnf.d/

 

[root@server1 my.cnf.d]# cp mariadb-server.cnf mariadb-server.backup

[root@server1 my.cnf.d]# vi mariadb-server.cnf

[galera]

# Mandatory settings

wsrep_on=ON

wsrep_provider=/usr/lib64/galera/libgalera_smm.so                    //경로나 이름이 다를 수 있으니 확인하고 적용

wsrep_cluster_address=gcomm://192.168.10.200,192.168.10.210,192.168.10.220,192.168.10.230

binlog_format=row

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

 

[root@server4 my.cnf.d]# systemctl start mariadb

[root@server4 my.cnf.d]# systemctl enable mariadb

 

 

 

나머지 server2,3,4에서...

[root@serverX my.cnf.d]# vi mariadb-server.cnf

wsrep_cluster_address=gcomm://192.168.10.200,192.168.10.210,192.168.10.220,192.168.10.230

 

---- 보통 자동으로 연동됨

 

 

[root@serverX my.cnf.d]# /maria/bin/mysql -u root -p   //mariadb 접속

> show variables like 'wsrep_cluster%';   //확인 시 없으면 아래처럼 넣기

> set global wsrep_cluster_address='gcomm://192.168.56.101,192.168.56.102,192.168.56.103,192.168.45.104'

 

 

#################################################################
######################         노드 제거           ########################

#################################################################

 

 

[root@server1 my.cnf.d]# /home/maria/maria/bin/mysqladmin -uroot -p shutdown   //1번 서버db만 셧다운됨

[root@server1 my.cnf.d]# systemctl stop mysql

[root@server1 my.cnf.d]# systemctl disable mysql

 

[root@server1 my.cnf.d]# vi mariadb-server.cnf

#[galera]//주석처리

# Mandatory settings  //주석처리

#wsrep_on=ON  //주석처리

#wsrep_provider=/usr/lib64/galera/libgalera_smm.so                //주석처리

#wsrep_cluster_address=gcomm://192.168.10.200,192.168.10.210,192.168.10.220,192.168.10.230 //주석처리

#binlog_format=row  //주석처리

#default_storage_engine=InnoDB  //주석처리

i#nnodb_autoinc_lock_mode=2  //주석처리

 

 

각 노드에서... server 2,3,4 제거

[root@serverX my.cnf.d]#$ vi /etc/my.cnf

#wsrep_cluster_address = 'gcomm://192.168.56.101,192.168.56.102,192.168.56.103'

 

 

server 2에서..

> show status like 'wsrep_incoming%';

+------------------------------+----------------------------------------------------------------------+

| Variable_name | Value |

+------------------------------+----------------------------------------------------------------------+

| wsrep_incoming_addresses | 192.168.56.101:3306, 192.168.56.103:3306, 192.168.56.104:3306 |

+-----------------------------+-----------------------------------------------------------------------+

 

 

 

 

 

 

참조

m.blog.naver.com/PostView.nhn?blogId=theswice&logNo=221451647648&proxyReferer=https:%2F%2Fwww.google.co.kr%2F

 

techpicnic.tistory.com/141

 

마이그레이션과 백업

m.blog.naver.com/theswice/221726407896

 

 

'linux' 카테고리의 다른 글

centos 8 - freeIPA (LDAP) 설치 + Kerberos  (0) 2021.01.08
centos 8 - galera + mariadb 마이그레이션  (0) 2021.01.08
centos 8 - rsyslog  (0) 2021.01.07
Centos - HAproxy + nginx  (0) 2021.01.07
centos teaming - lacp  (0) 2021.01.06