MySQL Cluster는 분산 컴퓨팅 환경에 적합한 실용성, 확장성, 고성능 및 중복성이 뛰어난 MySQL 버전입니다. 연구 및 개발 설계의 원래 의도는 많은 업계에서 가장 엄격한 애플리케이션 요구 사항을 충족하는 것입니다. 이러한 애플리케이션은 종종 99.999%에 도달하는 데이터베이스 작동 안정성을 요구합니다. MySQL 클러스터를 사용하면 비공유 시스템에 "인 메모리" 데이터베이스 클러스터를 배포할 수 있으며, 비공유 아키텍처를 통해 시스템은 저렴한 하드웨어를 사용할 수 있으며 소프트웨어 및 하드웨어에 대한 특별한 요구 사항이 없습니다. 또한 각 구성 요소에는 자체 메모리와 디스크가 있으므로 단일 장애 지점이 없습니다.
실제로 MySQL Cluster는 NDB라는 메모리 클러스터 스토리지 엔진을 표준 MySQL 서버와 통합합니다. 이는 MySQL 서버, 데이터 노드, 관리 서버 및 독점 데이터 액세스 프로그램을 포함할 수 있는 하나 이상의 프로세스를 각각 실행하는 일련의 컴퓨터로 구성됩니다.
MySQL 클러스터에는 다양한 장애 조치 및 로드 밸런싱 옵션으로 NDB 스토리지 엔진을 구성할 수 있는 기능이 있지만 클러스터 수준의 스토리지 엔진에서 이 작업을 수행하는 것이 가장 쉽습니다. 다음은 MySQL 클러스터 구조도이다.
MySQL은 구조적 관점에서 세 가지 유형의 노드(컴퓨터 또는 프로세스)로 구성되어 있다. , 즉 :
관리 노드: 전체 클러스터의 다른 노드에 대한 구성, 관리, 중재 및 기타 기능을 제공하는 데 사용됩니다. 이론적으로는 하나의 서버를 통해 서비스를 제공하는 것으로 충분합니다.
데이터 노드: 데이터와 로그를 저장하고 데이터에 대한 다양한 관리 서비스를 제공하는 MySQL 클러스터의 핵심이다. 노드가 2개 이상일 경우 클러스터의 고가용성을 보장할 수 있습니다. DB 노드 수가 늘어나면 클러스터의 처리 속도가 느려집니다.
SQL 노드(API): MySQL Cluster 데이터에 접근하고 외부 애플리케이션 서비스를 제공하는 데 사용됩니다. API 노드를 추가하면 전체 클러스터의 동시 액세스 속도와 전체 처리량이 향상됩니다. 노드는 웹 애플리케이션 서버, 전용 서버 또는 DB와 동일한 서버에 배포될 수 있습니다.
2 NDB 엔진
MySQL 클러스터는 전용 메모리 기반 스토리지 엔진인 NDB 엔진을 사용하므로 속도가 빠르고 디스크 I/O 병목 현상이 없다는 장점이 있습니다. 그러나 메모리 기반이기 때문에 데이터베이스 크기는 시스템의 총 메모리에 의해 제한됩니다. NDB를 실행하는 MySQL 서버의 경우 4G, 8G 또는 16G와 같은 충분한 메모리가 있어야 합니다. NDB 엔진은 분산되어 있으며 데이터 안정성과 확장성을 달성하기 위해 여러 서버에 구성할 수 있습니다. 이론적으로 두 개의 NDB 스토리지 노드를 구성하면 전체 데이터베이스 클러스터의 중복성과 단일 장애 지점 문제를 해결할 수 있습니다.
2.1 결함
메모리 기준으로 데이터베이스의 크기는 클러스터의 전체 메모리 크기에 의해 제한됩니다
메모리 특성상 정전 시 데이터가 손실될 수 있으므로 테스트를 통해 확인해야 합니다.
여러 노드가 통신, 데이터 동기화, 쿼리 등의 작업을 네트워크를 통해 구현하므로 네트워크 속도에 따라 무결성이 영향을 받기 때문에
속도도 상대적으로 느립니다
2.2 장점
여러 노드를 서로 다른 지리적 위치에 분산시킬 수 있어 분산 데이터베이스를 구현하는 솔루션이기도 합니다.
확장성이 매우 좋고, 노드를 추가하여 데이터베이스 클러스터를 확장할 수 있습니다.
이중화는 매우 좋습니다. 여러 노드에 완전한 데이터베이스 데이터가 있으므로 노드 중단 시간으로 인해 서비스가 중단되지 않습니다.
고가용성 구현 비용은 상대적으로 낮습니다. 공유 저장 장치와 전용 소프트웨어가 필요한 기존 고가용성 솔루션과 달리 NDB는 메모리가 충분하다면 구현할 수 있습니다.
2. 클러스터 구성
구성 방법의 모든 명령은 루트 계정으로 실행됩니다. 이 MySQL 클러스터에는 관리 노드 1개, 데이터 노드 2개, SQL 노드 2개가 포함되어 있습니다. 이 5개의 노드는 각각 5개의 가상 머신에 설치됩니다. 가상 머신의 이름과 IP는 다음과 같습니다.
관리 노드
mysql-mgm
192.168.124.141
데이터 노드1
mysql-ndbd-1
192.168.124.142
데이터 노드2
mysql-ndbd-2
192.168.124.143
SQL노드1
mysql-sql-1
192.168. 124.144
SQL노드2
mysql-sql-2
192.168.124.145
>
여기에서 세 개의 가상 머신에 각각 구성 항목을 구성하세요. 1. 가상 머신 설치
가상 머신 운영체제는 x86_64 버전의 CentOS 6.4를 설치하고 NAT 네트워크를 사용하며 vmware-tools도 설치합니다. 구체적인 설치 방법은 여기에 있습니다. 여기에는 자세히 설명되어 있지 않습니다.
2. mysql 클러스터 복사
다음 버전의 MySQL-Cluster를 다운로드합니다:
//m.sbmmt.com/다운로드한 압축 패키지를 가상 머신의 /root/Downloads 디렉터리에 복사한 후 셸에서 다음 명령을 실행합니다.
cd /root/Downloads
tar -xvzf mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64 /usr/local/mysql
로그인 후 복사
3. 보안 정책 끄기
chkconfig --level 35 iptables off
로그인 후 복사
iptables 방화벽 끄기 (또는 방화벽의 1186, 3306 포트를 켭니다), 셸에서 다음 명령을 실행합니다:
gedit /etc/selinux/config
로그인 후 복사
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
로그인 후 복사
SELinux를 끄고 셸에서 다음 명령을 실행합니다.
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
gedit config.ini