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/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 |