CentOS 7에서 MySQL 클러스터를 설치 및 구성하는 방법
이 페이지에서
- 전제 조건
- 1단계 - 관리 노드 설정
- A. 루트 사용자로 로그인하고 MySQL Cluster 소프트웨어를 다운로드합니다.\n
- B. 패키지 설치 및 제거
- 다. MySQL 클러스터 설치
- D. 데이터 노드 구성
- E. db3 서버에서 2.A - 2.D 단계를 다시 실행하십시오.\n
- A. 로그인 및 MySQL 클러스터 다운로드
- B. 패키지 설치 및 제거
- 다. MySQL 클러스터 설치
- D. SQL 노드 구성
- E. db5 서버에서 3.A - 3.D 단계를 다시 실행하십시오.\n
MySQL Cluster는 고가용성과 낮은 대기 시간을 갖춘 MySQL 호환 데이터베이스를 제공하도록 설계되었습니다. MySQL 클러스터 기술은 NDB(Network DataBase) 및 NDBCLUSTER 스토리지 엔진을 통해 구현되며 MySQL 데이터베이스 시스템을 위한 비공유 클러스터링 및 자동 샤딩을 제공합니다. 비공유 아키텍처에서 각 노드에는 자체 메모리와 디스크가 있으므로 NFS, SAN과 같은 공유 스토리지의 사용은 권장 및 지원되지 않습니다.
MySQL 클러스터를 구현하려면 세 가지 유형의 노드를 설치해야 합니다. 각 노드 유형은 자체 서버에 설치됩니다. 구성 요소는 다음과 같습니다.
1. 관리 노드 - NDB_MGMD/MGM
클러스터 관리 서버는 클러스터의 다른 노드를 관리하는 데 사용됩니다. 관리 노드에서 클러스터의 새 노드를 생성 및 구성하고 노드를 다시 시작, 삭제 또는 백업할 수 있습니다.
2. 데이터 노드 - NDBD/NDB
노드 간 동기화 및 데이터 복제 프로세스가 발생하는 계층입니다.
3. SQL 노드 - MySQLD/API
애플리케이션이 데이터베이스 클러스터에 연결하는 데 사용하는 인터페이스 서버.이 튜토리얼에서는 centOS 7을 사용하여 MySQL 클러스터의 설치 및 구성을 안내합니다. 관리 노드, 두 개의 데이터 노드 및 두 개의 SQL 노드를 구성합니다.
전제 조건
- OS는 CentOS 7 - 64bit입니다.
- 5개의 CentOS 서버 또는 가상 머신. 아래와 같이 호스트 이름과 IP 주소를 사용합니다.\n
- 관리 노드
db1=192.168.1.120 - 데이터 노드
db2=192.168.1.121
db3=192.168.1.122 - SQL 노드
db4=192.168.1.123
db5=192.168.1.124
1단계 - 관리 노드 설정
첫 번째 단계는 CentOS 7 db1 및 IP 192.168.1.120을 사용하여 "관리 노드"를 만드는 것입니다. 루트 사용자로 db1 서버에 로그인했는지 확인하십시오.
A. MySQL 클러스터 소프트웨어 다운로드
wget을 사용하여 MySQL 사이트에서 다운로드합니다. 여기에서는 CentOS 7과 호환되는 "Red Hat Enterprise Linux 7/Oracle Linux 7(x86, 64비트), RPM 번들"을 사용하고 있습니다. 그런 다음 tar 파일의 압축을 풉니다.
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tarB. 패키지 설치 및 제거
MySQL Cluster용 rpm 패키지를 설치하기 전에 MySQL-Cluster 서버에 필요한 perl-Data-Dumper를 설치해야 합니다. MySQL 클러스터를 설치하려면 먼저 mariadb-libs를 제거해야 합니다.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libsC. MySQL 클러스터 설치
다음 rpm 명령을 사용하여 MySQL Cluster 패키지를 설치합니다.
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm오류가 없는지 확인하십시오.
D. MySQL 클러스터 구성
구성 파일을 위한 새 디렉터리를 만듭니다. "/var/lib/mysql-cluster" 디렉토리를 사용하겠습니다.
mkdir -p /var/lib/mysql-cluster
그런 다음 mysql-cluster 디렉터리에 "config.ini"라는 클러스터 관리를 위한 새 구성 파일을 만듭니다.
cd /var/lib/mysql-cluster
vi config.ini아래 구성을 붙여넣습니다.
[ndb_mgmd default]
# Directory for MGM node log files
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
#Management Node db1
HostName=192.168.1.120
[ndbd default]
NoOfReplicas=2 # Number of replicas
DataMemory=256M # Memory allocate for data storage
IndexMemory=128M # Memory allocate for index storage
#Directory for Data Node
DataDir=/var/lib/mysql-cluster
[ndbd]
#Data Node db2
HostName=192.168.1.121
[ndbd]
#Data Node db3
HostName=192.168.1.122
[mysqld]
#SQL Node db4
HostName=192.168.1.123
[mysqld]
#SQL Node db5
HostName=192.168.1.124파일을 저장하고 종료합니다.
E. 관리 노드 시작
다음으로 아래 명령을 사용하여 관리 노드를 시작합니다.
ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini
결과는 다음과 유사해야 합니다.
MySQL Cluster Management Server mysql-5.6.28 ndb-7.4.10
2016-03-22 19:26:08 [MgmtSrvr] INFO -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2016-03-22 19:26:08 [MgmtSrvr] INFO -- Successfully created config directory관리 노드가 시작되었습니다. 이제 "ndb_mgm" 명령을 사용하여 노드를 모니터링할 수 있습니다.
ndb_mgm
show관리 노드가 mysql-6.6 및 ndb-7.4로 시작된 것을 볼 수 있습니다.
2단계 - MySQL 클러스터 데이터 노드 설정
데이터 노드에 대해 2개의 CentOS 서버를 사용합니다.
- db2=192.168.1.121
- db3=192.168.1.122
A. 루트 사용자로 로그인하고 MySQL Cluster 소프트웨어를 다운로드합니다.
ssh를 사용하여 db2 서버에 로그인합니다.
ssh
그런 다음 MySQL Cluster 패키지를 다운로드하고 압축을 풉니다.
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tarB. 패키지 설치 및 제거
perl-Data-Dumper를 설치하고 mariadb-libs를 제거합니다.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libsC. MySQL 클러스터 설치
이제 다음 rpm 명령을 사용하여 데이터 노드용 MySQL 클러스터 패키지를 설치할 수 있습니다.
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm오류가 없는지 확인하십시오.
D. 데이터 노드 구성
vi 편집기를 사용하여 /etc 디렉토리에 새 구성 파일을 만듭니다.
vi /etc/my.cnf
아래에 구성 붙여넣기:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address of Management Node
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address of Management Node파일을 저장하고 종료합니다.
그런 다음 관리 노드 구성 파일 "config.ini"에서 정의한 데이터베이스 데이터의 새 디렉터리를 만듭니다.
mkdir -p /var/lib/mysql-cluster
이제 데이터 노드/ndbd를 시작합니다.
ndbd
결과:
2016-03-22 19:35:56 [ndbd] INFO -- Angel connected to '192.168.1.120:1186'
2016-03-22 19:35:56 [ndbd] INFO -- Angel allocated nodeid: 2관리 노드 ip 192.168.1.120에 연결된 데이터 노드 db2.
E. db3 서버에서 2.A - 2.D 단계를 다시 실행합니다.
2개의 데이터 노드가 있으므로 두 번째 데이터 노드에서 2.A - 2.D 단계를 다시 실행하십시오.
3단계 - SQL 노드 설정
이 단계에는 데이터베이스에 대한 애플리케이션 액세스를 제공하는 SQL 노드에 대한 설정이 포함됩니다. 우리는 SQL 노드에 대해 2개의 CentOS 서버를 사용합니다.
- db4=192.168.1.123
- db5=192.168.1.124
A. MySQL Cluster 로그인 및 다운로드
root 사용자로 db4 서버에 로그인합니다.
ssh
그리고 MySQL Cluster 패키지를 다운로드합니다.
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tarB. 패키지 설치 및 제거
perl-Data-Dumper를 설치하고 MySQL Cluster와 충돌하는 mariadb-libs를 제거합니다.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libsC. MySQL 클러스터 설치
아래의 rpm 명령을 사용하여 MySQL Cluster 서버, 클라이언트 및 공유 패키지를 설치합니다.
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpmD. SQL 노드 구성
/etc 디렉터리에 새 my.cnf 파일을 만듭니다.
vi /etc/my.cnf
그리고 아래에 구성을 붙여넣습니다.
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address for server management node
default_storage_engine=ndbcluster # Define default Storage Engine used by MySQL
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address for server management node파일을 저장하고 편집기를 종료합니다.
MySQL 서버를 시작하여 SQL 노드를 시작합니다.
service mysql start
E. db5 서버에서 3.A - 3.D 단계를 다시 실행합니다.
두 번째 SQL 서버(db5)에서 3.A - 3.D 단계를 다시 실행하십시오.
4단계 - 클러스터 모니터링
클러스터 상태를 보려면 관리 노드 db1에 로그인해야 합니다.
ssh
ndb_mgm 명령어를 사용하여 클러스터 상태를 확인할 수 있습니다.
ndb_mgm
ndb_mgm> show또 다른 유용한 명령은 다음과 같습니다.
ndb_mgm -e "all status"
ndb_mgm -e "all report memory"5단계 - 클러스터 테스트
새로운 MySQL 클러스터에서 테스트를 수행하려면 SQL 노드 db4 또는 db5 서버에 로그인해야 합니다.
db4 서버에 로그인합니다.
ssh
루트 디렉터리의 ".mysql_secret" 파일에 저장된 기본 MySQL 암호를 변경합니다.
cd ~
cat .mysql_secret이것은 내 샘플입니다.
# The random password set for the root user at Tue Mar 22 19:44:07 2016 (local time): qna3AwbJMuOnw23T
이제 아래 명령으로 비밀번호를 변경하십시오.
mysql_secure_installation
이전 mysql 비밀번호를 입력한 다음 새 비밀번호를 입력하고 Enter 키를 눌러 모두 확인합니다.
모든 작업이 완료되면 비밀번호를 사용하여 MySQL 셸에 로그인할 수 있습니다.
mysql -u root -p
로그인한 후 "@" 호스트로 새 루트 사용자를 생성하면 외부에서 MySQL에 액세스할 수 있습니다.
CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';
aqwe123을 자신의 보안 암호로 바꾸십시오! 이제 MySQL 사용자 목록에서 "@" 호스트가 있는 새 루트 사용자를 볼 수 있습니다.
select user, host, password from mysql.user;
그리고 새 루트 사용자에게 원격 노드에서 읽기 및 쓰기 액세스 권한을 부여합니다.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*94CC7BF027327993D738E11...(Encrypted PASSWORD)' WITH GRANT OPTION;
이제 db4 서버에서 새 데이터베이스를 만들려고 하면 db5에서도 데이터베이스를 볼 수 있습니다.
이것은 클러스터 데이터 복제를 테스트하기 위한 샘플 결과일 뿐입니다.
MySQL 클러스터는 5개의 서버 노드가 있는 CentOS 7에서 성공적으로 설정되었습니다.
결론
MySQL 클러스터는 MySQL 데이터베이스에 대한 고가용성 및 이중화를 제공하는 기술입니다. NDB 또는 NDBCLUSTER를 스토리지 엔진으로 사용하고 MySQL 데이터베이스에 비공유 클러스터링 및 자동 샤딩을 제공합니다. 클러스터를 구현하려면 관리 노드(MGM), 데이터 노드(NDB) 및 SQL 노드(API)의 세 가지 구성 요소가 필요합니다. 각 노드에는 자체 메모리와 디스크가 있어야 합니다. NFS와 같은 네트워크 스토리지는 사용하지 않는 것이 좋습니다. CentOS 7 최소 시스템에 MySQL 클러스터를 설치하려면 mariadb-libs 패키지를 제거해야 합니다. mariadb-libs는 MySQL-Cluster-server와 충돌하며 MySQL-Cluster에 필요한 perl-Data-Dumper 패키지를 설치해야 합니다. -섬기는 사람. MySQL 클러스터는 여러 CentOS 서버에 설치 및 구성하기 쉽습니다.