CentOS7에 MariaDB Galera Cluster 다중 마스터 클러스터 설치

1. MariaDB Galera 클러스터 소개

MariaDB Galera Cluster는 MariaDB 데이터베이스의 다중 마스터 클러스터를 동기화하기위한 도구입니다. 데이터 측면에서 MariaDB 및 MySQL과 완벽하게 호환됩니다. 특성:

  • 동기식 복제

  • 활성-활성 다중 마스터 토폴로지 논리

  • 데이터는 클러스터의 모든 노드에서 읽고 쓸 수 있습니다.

  • 자동 멤버십 제어, 실패한 노드는 클러스터에서 자동으로 제거됩니다.

  • 자동 노드 결합

  • 행 수준에 기반한 진정한 병렬 복제

  • 직접 클라이언트 연결, 기본 MySQL 인터페이스


2. 환경 준비

두 개의 가상 머신을 준비하고 각각 CentOS7-1908 (7.7)을 설치합니다.

서버 A : 193.168.12.9     db1
서버 B : 193.168.12.10    db2


두 가상 머신에서 방화벽을 끕니다.

systemctl stop firewalld 
systemctl disable firewalld


두 개의 가상 머신에서 selinux를 닫습니다.

setenforce 0

/ etc / selinux / config를 수정하고 SELINUX = disabled를 설정하여 다시 시작한 후에 적용되도록합니다.


3. mariadb 10.5 설치

기본적으로 centos 소스에는 mariadb 10.5가 포함되어 있지 않습니다. 직접 구성해야합니다. /etc/yum.repo.d/mariadb.repo 파일을 만듭니다. 여기서 구성은 Alibaba Cloud 미러에서 다운로드하는 것으로 공식 웹 사이트보다 빠릅니다. 내용은 다음과 같습니다.

[mariadb] 
이름 = MariaDB 
baseurl = https : //mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64 
pgpkey = https : //mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB 
pgpcheck = 0


KEY 다운로드 및 가져 오기 :

wget --no-check-certificate https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB / etc / pki / rpm-gpg / 
rpm --import / etc / pki / rpm-gpg / *


yum으로 설치 :

yum install -y MariaDB-server MariaDB-client


이전에 다른 소스를 구성했는데 설치에 실패한 경우 정리하고 다시 시도 할 수 있습니다.

yum clean 메타 데이터


두 데이터베이스 서버는 동일한 작업을 수행합니다.


4. mariadb 구성

mariadb를 시작합니다.

systemctl start mariadb


요청시 초기화를 수행 할 수 있습니다.

mysql_secure_installation


기본적으로 mariadb는 루트의 로컬 로그인 만 허용합니다. 루트 원격 관리 권한을 수동으로 생성해야합니다. 새 루트를 생성하거나 현재 루트를 수정할 수 있습니다. 새 루트를 생성하는 경우 :

mysql -uroot -p 
use mysql 
create user root @ '%'는 'mariadb'로 식별됩니다. 
플러시 권한;


또는 루트가있는 호스트를 수정합니다.

mysql -u root -p 
use mysql 
update user set host = '%'where user = 'admin'and host = 'localhost'; 
플러시 권한;


두 데이터베이스 서버는 동일한 작업을 수행합니다.


5. 클러스터 설정

두 개의 독립 데이터베이스가 준비되면 galera 클러스터 형성을 시작하고 먼저 mariadb 서비스를 중지합니다.

systemctl 중지 mariadb


mariadb의 구성을 수정합니다. /etc/my.cnf.d/server.cnf 

[갈레] 
wsrep_on = ON 
wsrep_provider =는 / usr / lib64에 / 갈레-4 / libgalera_smm.so 
wsrep_cluster_address = GCOMM : //193.168.12.9,193.168.12.10 
wsrep_cluster_name = rvsdb 
wsrep_node_name = DB1 
wsrep_node_address = 193.168.12.9 
binlog_format = 로우 
default_storage_engine = 이노 
innodb_autoinc_lock_mode = 2 
wsrep_slave_threads = 1 
innodb_flush_log_at_trx_commit = 0 
bind-address = 0.0.0.0


wsrep_node_name 및 wsrep_node_address를 제외하고 두 서버 구성의 다른 구성 항목은 동일합니다.


새 클러스터를 만들어 첫 번째 노드를 시작합니다.

guys_new_cluster


이 시점에서 mysqld 프로세스가 매개 변수로 시작되고 동시에 포트 4567 및 3306에서 수신 대기하는 것을 볼 수 있습니다.

galera_new_cluster는 한 번만 실행되며, 노드는 향후 일반 서비스 모드로 다시 시작됩니다.

06.png

07.png


일반적인 방법으로 두 번째 노드를 시작합니다.

systemctl start mariadb


시작 중에 오류가보고되지 않으면 축하합니다. 클러스터 형성이 완료된 것입니다. 공식적인 권장 사항은 3 개 이상의 노드를 클러스터링하는 것이지만 2 개도 작동 할 수 있지만 Split-Brain 문제가 발생할 수 있습니다.


이때 양측은 모두 자신의 mariadb에 로그인하여 클러스터 상태를 확인합니다. 동일한 cluster_status_uuid가 있고 cluster_size 클러스터 수도 2로 2 개라는 것을 알 수 있습니다.

09.png


두 컴퓨터에서 각각 DDL 또는 SQL 문을 실행하면 둘 다 서로 동기화됩니다.






추천

출처blog.51cto.com/boytnt/2542583