Ubuntu 20.04에서 MariaDB Galera 클러스터를 설정하는 방법
이 튜토리얼은 다음 OS 버전에 대해 존재합니다.
- 우분투 20.04(Focal Fossa)
- 우분투 16.04(Xenial Xerus)
이 페이지에서
- 전제 조건
- 시작하기\n
- MariaDB 서버 설치
- Galera 클러스터 구성
- Galera 클러스터 초기화\n
- 클러스터 복제 확인\n
- 결론
로드 밸런싱 및 클러스터링은 프로덕션 환경에서 데이터베이스 시스템의 고가용성을 달성하는 데 매우 중요합니다. MariaDB Galera Cluster는 다중 마스터 클러스터링 솔루션을 제공하고 XtraDB/InnoDB 스토리지 엔진을 지원합니다. 다중 마스터 클러스터는 모든 클러스터 노드에 대한 읽기 및 쓰기를 허용합니다. 임의의 노드에서 데이터를 수정하면 다른 모든 노드에 복제됩니다. Galera 클러스터는 또한 클라우드 및 WAN 환경을 지원하여 국가 및 대륙에 분산된 클러스터를 구축합니다.
이 게시물에서는 Ubuntu 20.04 서버에서 3노드 MariaDB Galera 클러스터를 설정하는 방법을 보여줍니다.
전제 조건
- Ubuntu 20.04를 실행하는 서버 3대.\n
- 루트 암호는 서버에서 구성됩니다.\n
시작하기
시작하기 전에 시스템 패키지를 최신 버전으로 업데이트해야 합니다. 다음 명령을 사용하여 업데이트할 수 있습니다.
apt-get update -y
서버가 업데이트되면 다음 단계로 진행할 수 있습니다.
MariaDB 서버 설치
먼저 모든 노드에 MariaDB 서버를 설치해야 합니다. 다음 명령을 실행하여 설치할 수 있습니다.
apt-get install mariadb-server -y
설치가 완료되면 MariaDB 서비스를 시작하고 시스템 재부팅 시 시작할 수 있도록 활성화합니다.
systemctl start mariadb
systemctl status mariadb
다음으로 MariaDB 설치를 보호하고 각 노드에서 MariaDB 루트 암호를 설정해야 합니다. 다음 명령으로 수행할 수 있습니다.
mysql_secure_installation
아래와 같이 MariaDB 루트 암호를 설정하라는 메시지가 표시됩니다.
Enter current password for root (enter for none): Switch to unix_socket authentication [Y/n] n Change the root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
MariaDB 서버가 보안되면 다음 단계로 진행할 수 있습니다.
Galera 클러스터 구성
다음으로 각 노드가 서로 통신할 수 있도록 각 노드에 Galera 구성 파일을 생성해야 합니다.
첫 번째 노드에서 다음 명령을 사용하여 galera.cnf 파일을 만듭니다.
nano /etc/mysql/conf.d/galera.cnf
다음 줄을 추가합니다.
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="node1-ip-address" wsrep_node_name="node1"
완료되면 파일을 저장하고 닫습니다.
두 번째 노드에서 다음 명령을 사용하여 galera.cnf 파일을 만듭니다.
nano /etc/mysql/conf.d/galera.cnf
다음 줄을 추가합니다.
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="node2-ip-address" wsrep_node_name="node2"
완료되면 파일을 저장하고 닫습니다.
세 번째 노드에서 다음 명령을 사용하여 galera.cnf 파일을 만듭니다.
nano /etc/mysql/conf.d/galera.cnf
다음 줄을 추가합니다.
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address,node3-ip-address" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="node3-ip-address" wsrep_node_name="node3"
완료되면 파일을 저장하고 닫습니다.
Galera 클러스터 초기화
이 시점에서 모든 노드는 서로 통신하도록 구성됩니다.
다음으로 모든 노드에서 MariaDB 서비스를 중지해야 합니다. 다음 명령을 실행하여 MariaDB 서비스를 중지할 수 있습니다.
systemctl stop mariadb
첫 번째 노드에서 다음 명령을 사용하여 MariaDB Galera 클러스터를 초기화합니다.
galera_new_cluster
이제 다음 명령을 사용하여 클러스터의 상태를 확인합니다.
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
다음 출력이 표시되어야 합니다.
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 1 | +--------------------+-------+
두 번째 노드에서 다음 명령을 사용하여 MariaDB 서비스를 시작합니다.
systemctl start mariadb
그런 다음 다음 명령을 사용하여 MariaDB Galera 클러스터의 상태를 확인합니다.
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
다음 출력이 표시되어야 합니다.
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 2 | +--------------------+-------+
세 번째 노드에서 다음 명령을 사용하여 MariaDB 서비스를 시작합니다.
systemctl start mariadb
그런 다음 다음 명령을 사용하여 MariaDB Galera 클러스터의 상태를 확인합니다.
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
다음 출력이 표시되어야 합니다.
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+
이 시점에서 MariaDB Galera 클러스터가 초기화됩니다. 이제 다음 단계를 진행할 수 있습니다.
클러스터 복제 확인
다음으로 복제가 작동하는지 여부를 확인해야 합니다.
첫 번째 노드에서 다음 명령을 사용하여 MariaDB에 연결합니다.
mysql -u root -p
연결되면 다음 명령을 사용하여 일부 데이터베이스를 생성합니다.
MariaDB [(none)]> create database db1;
MariaDB [(none)]> create database db2;
그런 다음 다음 명령을 사용하여 MariaDB를 종료합니다.
MariaDB [(none)]> exit;
그런 다음 두 번째 노드로 이동하여 다음 명령을 사용하여 MariaDB에 로그인합니다.
mysql -u root -p
그런 다음 다음 명령을 실행하여 모든 데이터베이스를 표시합니다.
MariaDB [(none)]> show databases;
첫 번째 노드에서 만든 두 데이터베이스가 두 번째 노드에서 복제되는 것을 볼 수 있습니다.
+--------------------+ | Database | +--------------------+ | db1 | | db2 | | information_schema | | mysql | | performance_schema | +--------------------+ 5 rows in set (0.001 sec)
그런 다음 세 번째 노드로 이동하고 다음 명령을 사용하여 MariaDB에 로그인합니다.
mysql -u root -p
그런 다음 다음 명령을 실행하여 모든 데이터베이스를 표시합니다.
MariaDB [(none)]> show databases;
첫 번째 노드에서 만든 두 데이터베이스가 세 번째 노드에서 복제되는 것을 볼 수 있습니다.
+--------------------+ | Database | +--------------------+ | db1 | | db2 | | information_schema | | mysql | | performance_schema | +--------------------+ 5 rows in set (0.001 sec)
결론
위 가이드에서는 Ubuntu 20.04 서버에 3노드 MariaDB Galera 클러스터를 설정하는 방법을 배웠습니다. 이제 MariaDB Galera 클러스터에 더 많은 노드를 쉽게 추가할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.