이 글은 2개의 서버를 기반으로 MySQL 클러스터를 설치하고 구성하는 방법을 소개하는 것을 목표로 합니다. 그리고 서버에 문제가 있거나 다운된 경우에도 MySQL은 계속 실행될 수 있습니다.
알아채다! 2개의 서버를 기반으로 하는 MySQL 클러스터이지만, 관리 노드로 세 번째 서버가 추가로 있어야 하지만, 이 서버는 클러스터 시작이 완료된 후 종료될 수 있습니다. 동시에, 클러스터 시작이 완료된 후 관리 노드 역할을 하는 서버를 종료하는 것은 권장되지 않습니다. 이론적으로는 두 대의 서버만으로 MySQL 클러스터를 구축하는 것이 가능하지만, 이러한 아키텍처에서는 한 대의 서버가 다운되면 클러스터가 계속해서 정상적으로 작동할 수 없게 되어 클러스터의 의미가 상실됩니다. 이러한 이유로 관리 노드로 실행하려면 세 번째 서버가 필요합니다. 또한 많은 친구들이 실제 서버 3개 환경을 갖고 있지 않을 수 있으므로 VMWare나 다른 가상머신에서 실험을 하는 것을 고려할 수도 있습니다.
다음은 이 세 가지 서비스의 상황을 가정합니다.
서버1: mysql1.vmtest.net 192.168.0.1
서버2: mysql2.vmtest.net 192.168.0.2
서버3: mysql3.vmtest.net 192.168.0.3
Server1과 Server2는 실제로 MySQL 클러스터를 구성하는 서버 역할을 합니다. 관리 노드인 Server3에 대한 요구 사항은 더 낮습니다. Server3 시스템에 약간의 조정만 필요하며 Server3은 더 낮은 구성의 컴퓨터를 사용할 수 있으며 동시에 Server3에서 다른 서비스를 실행할 수 있습니다. 2. Server1과 Server2에 MySQL을 설치합니다.
==================================[url]/u/info_img/2009-05/30/url에서] mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz를 다운로드하세요. 참고: MySQL의 최대 버전이어야 합니다. 표준 버전은 클러스터 배포를 지원하지 않습니다. 다음 단계는 Server1과 Server2에서 한 번만 수행해야 합니다.
# mv mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz /usr/local/
# CD /usr/local/
# mysql 그룹 추가
# useradd -g mysql mysql
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm -f mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# mv mysql-max-4.1.9-pc-linux-gnu-i686 mysql
# CD MySQL
# 스크립트/mysql_install_db --user=mysql
# chown -R 루트 .
# chown -R mysql 데이터
# chgrp -R mysql .
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld 지금은 MySQL을 시작하지 마세요!
관리 노드 서버(Server3) 설치 및 구성
===================================== 관리 노드 서버로서 Server3에는 두 개의 파일이 필요합니다: ndb_mgm 및 ndb_mgmd: [url]/u/info_img/2009-05/30/url]에서 mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz를 다운로드합니다.
# mkdir /usr/src/mysql-mgm
# CD /usr/src/mysql-mgm
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# CD mysql-max-4.1.9-pc-linux-gnu-i686
# mv bin/ndb_mgm .
# mv bin/ndb_mgmd .
# chmod +x ndb_mg*
# mv ndb_mg* /usr/bin/
#CD
# rm -rf /usr/src/mysql-mgm 이제 이 관리 노드 서버에 대한 구성 파일 생성을 시작합니다.
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini config.ini에 다음 내용을 추가합니다.
[NDBD 기본값]
NoOfReplicas=2
[MYSQLD 기본값]
[NDB_MGMD 기본값]
[TCP 기본값]
#관리서버
[NDB_MGMD]
HostName=192.168.0.3 #관리 노드 서버 Server3의 IP 주소
# 스토리지 엔진
[NDBD]
HostName=192.168.0.1 #MySQL 클러스터 Server1의 IP 주소
데이터 디렉터리= /var/lib/mysql-cluster
[NDBD]
HostName=192.168.0.2 #MySQL 클러스터 Server2의 IP 주소
DataDir=/var/lib/mysql-클러스터
# 다음 두 개의 [MYSQLD]는 Server1과 Server2의 호스트 이름을 채울 수 있습니다.
# 단, 클러스터 내 서버를 더 빠르게 교체하려면 공백으로 두는 것이 좋으며, 그렇지 않은 경우 서버 교체 후 이 구성을 변경해야 합니다.
[MYSQLD]
[MYSQLD] 저장하고 종료한 후 관리 노드 서버 Server3을 시작합니다.
# ndb_mgmd로 관리 노드를 시작한 후 이는 관리 터미널 서비스가 아닌 관리 노드 서비스일 뿐이라는 점에 유의해야 합니다. 따라서 시작에 대한 출력 정보가 표시되지 않습니다. 4. 클러스터 서버 구성 및 MySQL 시작
============================== Server1과 Server2 모두에서 다음 변경 사항을 적용해야 합니다.
# vi /etc/my.cnf
[mysqld]
NDB클러스터
ndb-connectstring=192.168.0.3 #Server3의 IP 주소
[mysql_클러스터]
ndb-connectstring=192.168.0.3 #Server3의 IP 주소를 저장하고 종료한 후 데이터 디렉토리를 생성하고 MySQL을 시작합니다.
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# /usr/local/mysql/bin/ndbd --초기
# /etc/rc.d/init.d/mysqld start /etc/rc.local에 /usr/local/mysql/bin/ndbd를 추가하여 시작할 수 있습니다. 참고: ndbd를 처음 시작할 때나 Server3의 config.ini를 변경한 후에 --initial 매개변수만 사용해야 합니다! 5. 작업상태 확인
================ 관리 노드 서버 Server3으로 돌아가서 관리 터미널을 시작합니다.
# /usr/bin/ndb_mgm 현재 작업 상태를 보려면 show 명령을 입력하십시오. (다음은 상태 출력의 예입니다.)
[root@mysql3 루트]# /usr/bin/ndb_mgm
-- NDB 클러스터 -- 관리 클라이언트 --
ndb_mgm> 표시
관리 서버에 연결됨: localhost:1186
클러스터 구성
-------------
[ndbd(NDB)] 노드 2개
id=2 @192.168.0.1 (버전: 4.1.9, 노드 그룹: 0, 마스터)
id=3 @192.168.0.2 (버전: 4.1.9, 노드그룹: 0)
[ndb_mgmd(MGM)] 노드 1개
id=1 @192.168.0.3 (버전: 4.1.9)
[mysqld(API)] 노드 2개
id=4 (버전: 4.1.9)
id=5 (버전: 4.1.9)
ndb_mgm>
위의 문제가 없으면 지금 MySQL 테스트를 시작하십시오. 이 문서에서는 MySQL의 루트 비밀번호를 설정하지 않습니다. Server1 및 Server2의 MySQL 루트 비밀번호를 직접 설정하는 것이 좋습니다. Server1에서:
# /usr/local/mysql/bin/mysql -u 루트 -p
> 테스트를 사용합니다.
> CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
> ctest() 값(1)에 삽입;
> SELECT * FROM ctest; 1개의 행이 반환된 정보(반환 값 1)를 볼 수 있어야 합니다. 위의 내용이 정상이라면 Server2로 전환하여 위의 테스트를 반복하여 효과를 관찰해 보세요. 성공하면 Server2에서 INSERT를 실행한 후 다시 Server1로 전환하여 정상적으로 작동하는지 관찰합니다. 문제가 없다면 성공을 축하합니다! 6. 파괴적인 테스트
============== Server1 또는 Server2의 네트워크 케이블을 뽑고 다른 클러스터 서버가 정상적으로 작동하는지 관찰합니다(SELECT 쿼리를 사용하여 테스트할 수 있음). 테스트가 완료되면 네트워크 케이블을 다시 삽입하세요. 물리적 서버에 액세스할 수 없는 경우, 즉 네트워크 케이블을 분리할 수 없는 경우 다음과 같이 테스트할 수도 있습니다. Server1 또는 Server2에서:
# ps aux | grep ndbd는 모든 ndbd 프로세스 정보를 볼 것입니다:
루트 5578 0.0 0.3 6220 1964 ? S 03:14 0:00 ndbd
루트 5579 0.0 20.4 492072 102828 R 03:14 0:04 ndbd
root 23532 0.0 0.1 3680 684 pts/1 S 07:59 0:00 grep ndbd 그런 다음 ndbd 프로세스를 종료하여 MySQL 클러스터 서버를 파괴합니다.
# kill -9 5578 5579 이후에는 다른 클러스터 서버에서 SELECT 쿼리를 사용하여 테스트합니다. 그리고 관리 노드 서버의 관리 터미널에서 show 명령어를 실행하면 손상된 서버의 상태를 확인할 수 있다. 테스트가 완료된 후에는 손상된 서버의 ndbd 프로세스만 다시 시작하면 됩니다.
#ndbd주의! 앞서 언급했듯이 지금은 --initial 매개변수를 추가할 필요가 없습니다! 이제 MySQL 클러스터 구성이 완료되었습니다!