우분투에 MariaDB 갈레 클러스터를 설치하는 방법 16.04

우분투에 MariaDB 갈레 클러스터를 설치하는 방법 16.04

MariaDB 갈레는 MariaDB를위한 다중 마스터 클러스터입니다. MariaDB 이후 10.1, MariaDB 서버 및 MariaDB 갈레 서버 패키지가 결합되었고, MariaDB를 설치할 때 갈레 패키지와 의존성이 자동으로 설치 얻을. 현재, MariaDB 갈레 클러스터에만 이노 / XtraDB 스토리지 엔진을 지원합니다. MariaDB에서 10.0 그리고 5.5, 당신은 별도로 다운로드해야합니다. MariaDB 갈레는 사이트의 데이터베이스에 대한 중복을 추가. MariaDB 갈레 클러스터에서, 여러 데이터베이스 서버는 서로 상호 연결 및 동기화 유지.

MariaDB 갈레는 기능을 많이 제공, 그들 중 일부는 다음과 같습니다.

  1. 동기식 복제.
  2. 가입 자동 노드.
  3. 액티브 - 액티브 다중 마스터 토폴로지.
  4. 진정한 병렬 복제, 행 수준에.
  5. 읽기 및 확장 성을 쓰기, 작은 클라이언트 대기 시간.
  6. 실패 노드, 클러스터에서 자동 드롭.

이 자습서에서는, 우리가 설명하는 방법을 설정 MariaDB 갈레 클러스터에 10.1 와 함께 3 우분투에서 실행되는 노드 16.04 서버. 우리는 또한 모든 노드 사이의 데이터베이스 복제를 테스트합니다.

요구 사항

  • 우분투를 실행하는 세 개의 노드 16.04 서버.
  • 고정 IP 주소를 가진 노드 1 192.168.0.102, 고정 IP 주소와 노드 2 192.168.0.103 정적 IP 주소와 노드 3 192.168.0.104 서버에 구성.
  • 모든 노드에 sudo는 권한 설정과 비 루트 사용자.

시작 하기

첫 번째, 당신은 최신 버전으로 모든 노드를 업데이트해야합니다. 다음 명령으로 모두 업데이트 할 수 있습니다 :

sudo-업데이 트-y
sudo-업그레이드-y

다음, 이러한 변경 사항을 적용하려면 모든 노드를 다시 시작. 다음, sudo는 사용자로 로그인하고 다음 단계로 진행.

MariaDB 갈레 설치

MariaDB 서버 및 MariaDB 갈레 서버 패키지 버전 MariaDB에 결합 10.1. 기본적으로, MariaDB 10.1 기본 우분투 저장소에서 사용할 수 없습니다, 그래서 당신은 모든 노드에서 MariaDB 저장소를 추가해야합니다.

첫 번째, 다음 명령을 사용하여 MariaDB 저장소 키를 추가 :

sudo 적합성 키 전진 –RECV - 키 –키 서버 HKP : //keyserver.ubuntu.com : 80 0xF1656F24C74CD1D8

다음, 저장소를 추가하고 다음 명령을 사용하여 APT 캐시를 업데이트 :

sudo를 부가 쉽다 - 저장소 'DEB [아치 = AMD64, I386, ppc64el]을 http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu 주객 간의 주요’
sudo-업데이 트-y

저장소가 업데이트되면, 다음 명령을 MariaDB를 설치 :

sudo는 apt-get을 설치 mariadb 서버에 rsync -y

위의 명령은 갈레 여러 종속성 MariaDB를 설치합니다. 구성 될 때까지 갈레 부품 휴면 남아, 플러그인 또는 스토리지 엔진과 같은. MariaDB는 모든 노드에 설치되면, 당신은 MariaDB을 확보하기 위해 진행할 수 있습니다.

기본적으로 MariaDB 설치 안전 하지, 그래서 당신이 MariaDB 설치를 확보 해야 합니다.. Mysql_secure_installation 스크립트를 실행 하 여이 수행할 수 있습니다.

sudo mysql_secure_installation

이 과정에서, 루트 암호를 설정 하 라는 메시지가 표시 될, 익명 사용자를 제거, 원격 루트 로그인을 허용 하지 않도록 하 고 테스트 데이터베이스 제거. 아래와 같이 모든 질문에 대답:

Enter current password for root (enter for none):
Change the root password? [Y/n] n
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는 모든 노드에 고정되면, 다음 단계를 진행할 수 있습니다..

노드 1에 설치 MariaDB 클러스터

첫 번째, 노드 1로 이동 갈레의 구성 파일을 생성. 기본적으로, MariaDB는 /etc/mysql/conf.d/ 디렉토리에서 구성을 읽고. 이렇게 하려면, 다음 명령을 실행 합니다.

sudo 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://192.168.0.102,192.168.0.103,192.168.0.104"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="192.168.0.102"
wsrep_node_name="Node1"

완료 되 면 파일을 저장.

참고: 192.168.0.102 노드 1의 IP 주소입니다

갈레 클러스터에 노드 2 추가

다음, 노드 2로 이동 갈레의 구성 파일을 만듭니다

sudo 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://192.168.0.102,192.168.0.103,192.168.0.104"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="192.168.0.103"
wsrep_node_name="Node2"

완료 되 면 파일을 저장.

참고: 192.168.0.103 노드 2의 IP 주소입니다.

갈레 클러스터에 노드 3 추가

다음, 노드 3에 가서 갈레의 구성 파일을 만듭니다

sudo 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://192.168.0.102,192.168.0.103,192.168.0.104"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="192.168.0.104"
wsrep_node_name="Node3"

완료 되 면 파일을 저장.

참고: 192.168.0.104 노드 3의 IP 주소입니다.

방화벽 구성

갈레 클러스터는 네 개의 포트를 사용합니다 3306 MySQL 클라이언트 연결을위한, 4444 국가 스냅 샷 전송을위한, 4567 갈레 클러스터 복제 트래픽 및 4568 증분 주 전송을위한. 그래서 당신은 UFW 방화벽을 사용하여 모든 포트를 허용해야합니다. 당신은 모든 노드에서 다음 명령을 실행하여이 작업을 수행 할 수 있습니다 :

첫 번째, 다음 명령을 사용하여 UFW 방화벽을 사용 :

sudo ufw 활성화

다음, 다음 명령을 사용하여 모든 포트를 허용 :

sudo는 UFW는 3306 / TCP를 허용
sudo는 UFW는 4444 / TCP를 허용
sudo는 UFW는 4567 / TCP를 허용
sudo는 UFW는 4568 / TCP를 허용
sudo는 UFW는 4567 / UDP를 허용

그런 다음 다음 명령을 사용하여 방화벽의 상태를 확인할 수 있습니다 :

sudo ufw 상태

UFW 방화벽은 모든 노드에 구성되면, 다음 단계를 진행할 수 있습니다..

MariaDB 갈레 클러스터 시작

성공적으로 모든 노드를 구성한 후, 노드 1로 이동 갈레 클러스터 시작.

갈레 시작하기 전에, 당신은 MariaDB 서비스가 모든 노드에서 중지되었는지 확인해야합니다.

모든 노드에서 다음 명령을 실행합니다 :

sudo systemctl 중지 mysql

지금, 다음 명령을 사용하여 노드 1에 갈레 클러스터를 시작합니다 :

sudo는 galera_new_cluster

지금, 클러스터가 다음 명령을 실행 여부 확인 :

mysql-u 루트-p-e “'wsrep_cluster_size'와 같은 표시 상태”

모든 것이 좋은 경우 다음과 같은 결과가 나타납니다 :

+--------------------+-------+
| Variable_name | 값 |
+--------------------+-------+
| wsrep_cluster_size | 1     |
+--------------------+-------+

노드 2에, MariaDB 서비스를 시작합니다 :

sudo systemctl 시작 mysql

그 다음 명령을 사용하여 작동 여부 당신은 MariaDB 서비스의 상태를 확인할 수 있습니다 :

sudo systemctl 상태 mysql

모든 것이 잘 하는 경우, 다음과 같은 출력이 표시 됩니다.

?? mariadb.service - MariaDB database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2017-09-17 10:11:20 EDT; 10min ago
  Process: 715 ExecStartPost = / 빈 / SH -c systemctl 해제 - 환경 _WSREP_START_POSITION (코드 =에 Exited, status=0/SUCCESS)
  Process: 713 ExecStartPost =은 / etc / mysql을 / 데비안 스타트 (코드 =에 Exited, status=0/SUCCESS)
  Process: 545 ExecStartPre는 = / 빈 / 쉬 -c의 [! -e는 / usr / 빈 / galera_recovery] && VAR = || VAR =`는 / usr / 빈 / galera_recovery`; [ $? -eq 0 ]   && systemctl set
  Process: 535 ExecStartPre = / 빈 / SH -c systemctl 해제 - 환경 _WSREP_START_POSITION (코드 =에 Exited, status=0/SUCCESS)
  Process: 514 ExecStartPre =는 / usr / 빈 / 설치 -m 755 -오 MySQL의 -g 루트 -d / var에 / 실행 / mysqld를 (코드 =에 Exited, status=0/SUCCESS)
 Main PID: 661 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 26 (제한: 4915)
   CGroup: /system.slice/mariadb.service
           ??????661 /usr/sbin/mysqld

Sep 17 1011 : 11 데비안 systemd [1] : MariaDB 데이터베이스 서버 시작 ...
. 17 10: 11 : 15 데비안 mysqld에 [661] 2017-09-17 10: 11 : 15 140287134630464 [Note] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) starting as process
Sep 17 1011 : 20 데비안 systemd [1] : 시작 MariaDB 데이터베이스 서버.

지금, 두 번째 노드가 자동으로 클러스터에 연결 한한다. 다음 명령을 확인 할 수 있습니다 :

mysql-u 루트-p-e “'wsrep_cluster_size'와 같은 표시 상태”

모든 것이 잘 작동하는 경우, 클러스터 크기는 두 가지로 설정해야합니다 :

+--------------------+-------+
| Variable_name | 값 |
+--------------------+-------+
| wsrep_cluster_size | 2     |
+--------------------+-------+

노드 3에, MariaDB 서비스를 시작합니다 :

sudo systemctl 시작 mysql
mysql-u 루트-p-e “'wsrep_cluster_size'와 같은 표시 상태”

모든 것이 잘 작동하는 경우, 클러스터 크기는 세 가지로 설정해야합니다 :

+--------------------+-------+
| Variable_name | 값 |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

이제 작업과 서로 통신 클러스터.

테스트 데이터베이스 복제

지금, 모든 노드가 온라인, 그것은 갈레 클러스터를 통해 데이터베이스 복제를 테스트하는 시간이다. 의 노드 1에서 데이터베이스를 생성하여 시작하자이 모든 노드에 복제되어 있는지 확인.

첫 번째, 다음 명령을 MariaDb 콘솔에 로그인 :

mysql-u 루트-p

루트 암호를 입력하고 이름 test_db와 데이터베이스를 만들 :

MariaDB [(없음)]> 데이터베이스 test_db를 만들;
MariaDB [(없음)]> 표시 데이터베이스;

+--------------------+
| 데이터베이스 |
+--------------------+
| test_db |
+--------------------+

이제 노드 2와 노드 3으로 이동, 다음 복제가 작동되지 않거나 확인 :

mysql-u 루트-p
MariaDB [(없음)]> 표시 데이터베이스;

+--------------------+
| 데이터베이스 |
+--------------------+
| test_db |
+--------------------+

치하! 당신은 성공적으로 설치 및 우분투에 MariaDB 갈레 클러스터 구성했습니다 16.04 서버.

결론

난 당신이 우분투에 MariaDB 갈레 클러스터를 설치하고 구성하는 지금 충분한 지식을 가지고 희망 16.04. 이제 쉽게 몇까지 확장 할 수 있습니다, 심지어 수십, 의 서로 다른 노드. 당신은 의심의 여지 이상의 쿼리가있는 경우, 다음 링크를 참조 갈레 클러스터 문서

소스