Install MySQL 8.0 (yum) with Galera cluster in CentOS 7

리눅스/MySQL|2021. 11. 8. 10:48
반응형

CentOS 7 에서 MySQL 8.0 과 Galera 4 버전을 설치하고 cluster 설정을 해보았습니다.

아래는 간략히 설치하고 설정하는 방법만 기술하였습니다.

 

 

1. 설치

 

서버 두대에 동일하게 설치를 진행합니다.

 

# vi /etc/yum.repos.d/galera.repo

[galera]
name = Galera
baseurl = https://releases.galeracluster.com/galera-4.9/centos/7/x86_64
gpgkey = https://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1

[mysql-wsrep]
name = MySQL-wsrep
baseurl = http://releases.galeracluster.com/mysql-wsrep-8.0.25-26.7/centos/7/x86_64/
gpgkey = https://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1

# yum -y install galera-4 mysql-wsrep-8.0

 

 

2. 사용자 생성 및 권한 부여

 

(마스터 노드 192.168.200.105 에서만)

계정 생성을 위해 mysqld 를 우선 가동해줍니다.

 

# systemctl start mysqld

 

# mysql -p

Enter password: (root 패스워드 입력 후 엔터) // 초기 root 패스워드는 로그파일에 기록되어 있습니다. (/var/log/mysqld.log)

 

최초 패스워드로 로그인하면 새로운 패스워드로 변경 전까지 일반 작업은 불가능합니다. 아래와 같이 변경 해줍니다.

mysql> alter user 'root'@'localhost' identified by '12345678'; 

mysql> flush privileges;

 

두 서버간 동기화를 담당할 계정 galera 를 생성합니다. 계정명은 무엇이든 상관 없습니다.

mysql> CREATE USER 'galera'@'localhost' IDENTIFIED WITH caching_sha2_password BY '12345678';

mysql> GRANT ALL PRIVILEGES ON *.* TO 'galera'@'localhost'; 
mysql> GRANT GRANT OPTION ON *.* TO 'galera'@'localhost'; 
mysql> flush privileges;

 

 

3. 설정

 

두 노드의 설정 방법이 약간 다릅니다. 파란색 글자를 유의해서 설정합니다.

 

(마스터 노드 192.168.200.105 에서)

# systemctl stop mysqld

 

# vi /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

# 여기에서부터 추가
user=mysql
bind-address="0.0.0.0"
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=2G
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.200.105,192.168.200.106"
wsrep_provider_options="gcache.size=300M; gcache.page_size=300M;"
wsrep_cluster_name="cluster"
wsrep_node_name="db1"
wsrep_node_address="192.168.200.105"
wsrep_sst_method="clone"
wsrep_sst_auth="galera:12345678"

설정 후 galera cluster 기능을 사용하는 mysqld 를 최초 가동 합니다. 

# mysqld_bootstrap --wsrep-new-cluster

 

(슬레이브 노드 192.168.200.106 에서)

# vi /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

# 여기에서부터 추가
user=mysql
bind-address="0.0.0.0"
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=2G
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.200.105,192.168.200.106"
wsrep_provider_options="gcache.size=300M; gcache.page_size=300M;"
wsrep_cluster_name="cluster"
wsrep_node_name="db2"
wsrep_node_address="192.168.200.106"
wsrep_sst_method="clone"
wsrep_sst_auth="galera:12345678"

저장 후 일반적인 가동만 해주면 설정되어진 값으로 자동 동기화가 이루어집니다.

# systemctl start mysqld

 

 

4. 확인

쿼리로 직접 데이터 입력해보는 방법과 mysql 상태값을 확인하는 방법이 있습니다.

 

1) 마스터 서버에서 DB 를 생성하면 슬레이브 서버에서도 확인이 가능

mysql> create database sysdocu;

mysql> show databases;

 

2) galera cluster 설정 상태 확인

mysql> show variables like '%wsrep_cluster%';
+-------------------------+-----------------------------------------+
| Variable_name           | Value                                   |
+-------------------------+-----------------------------------------+
| wsrep_cluster_address   | gcomm://192.168.220.105,192.168.220.106 |
| wsrep_cluster_name      | cluster                                 |
| wsrep_cluster_server_id | 1                                       |
+-------------------------+-----------------------------------------+

 

 

반응형

댓글()