웹사이트 검색

CentOS 7에서 MySQL 클러스터를 설치 및 구성하는 방법


이 페이지에서

  1. 전제 조건
  2. 1단계 - 관리 노드 설정
    1. A. MySQL 클러스터 소프트웨어 다운로드\n
    2. B. 패키지 설치 및 제거
    3. 다. MySQL 클러스터 설치
    4. D. MySQL 클러스터 구성
    5. E. 관리 노드 시작

    1. A. 루트 사용자로 로그인하고 MySQL Cluster 소프트웨어를 다운로드합니다.\n
    2. B. 패키지 설치 및 제거
    3. 다. MySQL 클러스터 설치
    4. D. 데이터 노드 구성
    5. E. db3 서버에서 2.A - 2.D 단계를 다시 실행하십시오.\n

    1. A. 로그인 및 MySQL 클러스터 다운로드
    2. B. 패키지 설치 및 제거
    3. 다. MySQL 클러스터 설치
    4. D. SQL 노드 구성
    5. 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.tar

      B. 패키지 설치 및 제거

      MySQL Cluster용 rpm 패키지를 설치하기 전에 MySQL-Cluster 서버에 필요한 perl-Data-Dumper를 설치해야 합니다. MySQL 클러스터를 설치하려면 먼저 mariadb-libs를 제거해야 합니다.

      yum -y install perl-Data-Dumper
      yum -y remove mariadb-libs

      C. 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 서버를 사용합니다.

      1. db2=192.168.1.121
      2. 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.tar

      B. 패키지 설치 및 제거

      perl-Data-Dumper를 설치하고 mariadb-libs를 제거합니다.

      yum -y install perl-Data-Dumper
      yum -y remove mariadb-libs

      C. 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 서버를 사용합니다.

      1. db4=192.168.1.123
      2. 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.tar

      B. 패키지 설치 및 제거

      perl-Data-Dumper를 설치하고 MySQL Cluster와 충돌하는 mariadb-libs를 제거합니다.

      yum -y install perl-Data-Dumper
      yum -y remove mariadb-libs

      C. 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. 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 서버에 설치 및 구성하기 쉽습니다.