본문 바로가기
Database/MariaDB Galera Cluster

MySQL/MariaDB Galera Cluster 구성하기 - Part 3

by 시스파고 2020. 6. 4.

[순서]

2020/06/02 - [Database/Galera Cluster] - MySQL/MariaDB Galera Cluster 구성하기 - Part 1

2020/06/04 - [Database/Galera Cluster] - MySQL/MariaDB Galera Cluster 구성하기 - Part 2

2020/06/04 - [Database/Galera Cluster] - MySQL/MariaDB Galera Cluster 구성하기 - Part 3

2020/06/05 - [Database/Galera Cluster] - Galera Cluster 재기동 에러 해결 방안

 

 

 

초기 설정이 완료되었으니 Node1/2를 Clustering을하여 DB가 잘 연동되었는지 확인해보겠습니다.

확인 후에 추가로 Node1(Server One)의 초기설정을 변경해야하는 중요한 작업이 있으니 꼭 확인해야합니다. 이 부분은 뒤에서 좀 더 자세히 설명하겠습니다.

 

0. Galera Clustering 작업

 

0.1 Node 1 Galera Cluster 초기화

앞서 Node 1/2 모두 초기 설정을 완료했으니 node1에서 cluster를 초기화하는 작업이 먼저 필요합니다.

# Galera Cluster 초기화
[root@galera-01 ~]# service mysql start --wsrep-new-cluster
Starting mysql (via systemctl):                            [  OK  ]

# node1(Server One) 상태 확인
[root@galera-01 ~]# ps -ef | grep mysql
mysql     14773  14619  0 13:30 ?        00:00:00 /usr/sbin/mysqld 
--basedir=/usr 
--datadir=/var/lib/mysql 
--plugin-dir=/usr/lib64/mysql/plugin 
--user=mysql 
--wsrep_on=ON 
--wsrep_provider=/usr/lib64/galera/libgalera_smm.so 
--log-error=/var/lib/mysql/galera-01.err 
--pid-file=/var/lib/mysql/galera-01.pid 
--wsrep_start_position=a4fe716e-a609-11ea-95ab-fa16ac4cfe80:0

 

0.2 Node 2 Galera Cluster 추가

# Galera Cluster 초기화
[root@galera-02 ~]# service mysql start
Starting mysql (via systemctl):                            [  OK  ]

# node2(Server Two) 상태 확인
[root@galera-02 ~]# ps -ef | grep mysql
mysql     16041  15887  0 13:46 ?        00:00:00 /usr/sbin/mysqld 
--basedir=/usr 
--datadir=/var/lib/mysql 
--plugin-dir=/usr/lib64/mysql/plugin 
--user=mysql 
--wsrep_on=ON 
--wsrep_provider=/usr/lib64/galera/libgalera_smm.so 
--log-error=/var/lib/mysql/galera-02.err 
--pid-file=/var/lib/mysql/galera-02.pid 
--wsrep_start_position=00000000-0000-0000-0000-000000000000:-1

 

1. Clustering 상태 확인

MariaDB에 접속하여 Cluster가 잘 적용되었는지 확인하겠습니다. 또한 아래내용과 같이 검색을하면 각 노드의 값이 동일하게 적용되어 Cluster가 잘 구성된 것을 확인 할 수 있습니다. 'wsrep%'값을 일부만 발취했습니다. 

# MariaDB 접속
[root@galera-01 ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.2.32-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show status like 'wsrep%';
+-------------------------------+---------------------------------------+
| Variable_name                 | Value                                 |
+-------------------------------+---------------------------------------+ 
| wsrep_cluster_status          | Primary                               | 
| wsrep_connected               | ON                                    | 
| wsrep_incoming_addresses      | 10.41.226.226:3306,10.41.227.100:3306 |
| wsrep_local_state_comment     | Synced                                |
| wsrep_provider_name           | Galera                                |
| wsrep_ready                   | ON                                    |
+-------------------------------+---------------------------------------+

 

2. DB 생성으로 데이터 sync 확인

node1에서 galeradb database를 생성하여 실시간으로 node2에서도 생성되었는지 확인해보자.

# node1에서 database 생성
[root@galera-01 ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.2.32-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

MariaDB [(none)]> create database galeradb;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| galeradb           |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)



# node2에 sync되어 생성되었는지 확인
[root@galera-02 ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.2.32-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
MariaDB [(none)]>
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| galeradb           |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

 

3. *중요* 완료 후 node1(Server One) 설정 변경

모든 Test가 완료되었습니다. 하지만 아직 마지막으로 중요한 작업이 남아있습니다. 현 상태로 두게되면 DB를 restart했을때 에러가 발생하게 됩니다. 그 이유는 node1에  wsrep_cluster_address='gcomm://'의 값이 아무것도 없기때문에 발생하는 에러로 cluster에 포함된 IP들을 추가해야 합니다.

# Config node1(Server One) galera clutser
[root@galera-01 ~]# vi /etc/my.cnf.d/server.cnf 

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so 
wsrep_cluster_address='gcomm://10.41.227.100'        # Galera Cluster IP 추가
wsrep_cluster_name='cluster'                        
wsrep_node_address='10.41.226.226'                 
wsrep_node_name='galera01'                             
wsrep_sst_method=rsync
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

 

Finish!!! 수고하세요!! 모두

댓글