웹사이트 검색

Ubuntu 16.04에 MySQL 클러스터를 설치하는 방법


MySQL Cluster는 MySQL 데이터베이스에 고가용성을 제공하는 기술입니다. NDB(Network DataBase) 또는 NDBCLUSTER를 데이터베이스 스토리지 엔진으로 사용합니다. MySQL Cluster는 단일 장애 지점이 없는 다중 마스터 ACID 아키텍처로 설계되었으며 자동 분할(분할)을 사용하여 읽기 및 쓰기 프로세스를 확장합니다.

MySQL 클러스터를 구현하려면 3가지 유형의 노드가 필요합니다.

  • 관리 노드(ndb_mgmd)
    • 클러스터 모니터링 및 구성에 사용됩니다.

    • 이러한 노드는 자동 샤딩을 제공하고 복제를 처리할 수 있는 데이터를 저장하는 데 사용됩니다.

    • 모든 노드에 연결하기 위한 MySQL 서버 인터페이스.

    이 튜토리얼에서는 Ubuntu 16.04 LTS(Xenial Xerus)에 MySQL 클러스터를 설치하는 방법을 보여줍니다.

    전제 조건

    • Ubuntu 서버 16.04가 있는 4개의 노드

    <올 스타일=여백-왼쪽:40px>

  • 192.168.1.11 관리 노드
  • 192.168.1.12 데이터 노드1
  • 192.168.1.13 데이터 노드2
  • 192.168.1.14 sql-node

    • 노드에 대한 루트 권한.

    1단계 - 관리 노드 설치 및 구성

    이 단계에서는 IP 주소가 192.168.1.11인 클러스터에 대한 관리 노드를 설치합니다. MySQL 클러스터 소프트웨어를 설치하고 클러스터의 관리 노드로 구성합니다.

    ssh를 사용하여 관리 노드에 로그인합니다.

    ssh 
    TYPE YOUR PASSWORD

    A. MySQL 클러스터 관리 노드 설치

    여기에서 MySQL 클러스터 사이트를 열고 Linux-generic 옵션을 선택한 다음 다운로드 버튼을 클릭하여 64비트 패키지를 다운로드합니다.

    wget으로 MySQL 클러스터 패키지를 다운로드하고 압축을 풉니다.

    wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
    tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz

    디렉터리 이름을 mysql로 바꿉니다.

    mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/

    mysql 디렉토리로 이동하여 클러스터 관리 명령 ndb_mgmdndb_mgm에 대한 2개의 바이너리 파일을 /usr/local/bin/ 디렉토리에 복사한 다음 다음을 사용하여 실행 가능하게 만듭니다. chmod 명령.

    cd ~/mysql/
    cp bin/ndb_mgm* /usr/local/bin/
    chmod +x /usr/local/bin/ndb_mgm*

    B. MySQL 클러스터 관리 노드 구성

    /var/lib/ 디렉토리의 구성 파일에 대한 새 디렉토리 mysql-cluster를 생성하여 관리 노드를 구성합니다.

    mysql-cluster 디렉터리를 만들고 디렉터리에 새 구성 config.ini를 만듭니다.

    mkdir -p /var/lib/mysql-cluster/
    vim /var/lib/mysql-cluster/config.ini

    아래 구성을 붙여넣습니다.

    [ndbd default]
    NoOfReplicas=2
    DataMemory=80M
    IndexMemory=18M

    [mysqld default]

    [ndb_mgmd default]

    [tcp default]

    # Cluster Control / Management node
    [ndb_mgmd]
    hostname=192.168.1.11

    # Data Node 1
    [ndbd]
    hostname=192.168.1.12
    DataDir= /var/lib/mysql-cluster

    # Data Node 1
    [ndbd]
    HostName=192.168.1.13
    DataDir=/var/lib/mysql-cluster

    # SQL Node
    [mysqld]
    hostname=192.168.1.14

    # If you to add new SQL Node
    [mysqld]

    관리용 ndb_mgmd, 데이터 노드용 ndbd 및 SQL 노드용 mysqld의 IP 주소를 설정과 일치하도록 변경하십시오.

    파일을 저장하고 종료합니다.

    다음으로 아래 명령을 사용하여 관리 노드 프로세스를 시작합니다.

    ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/

    /etc/rc.local 파일에 명령을 추가하여 부팅 시 시작되도록 합니다.

    echo 'ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/' >> /etc/rc.local

    결과가 표시되는 경우:

    MySQL Cluster Management Server mysql-5.6.31 ndb-7.4.12

    그런 다음 관리 노드 프로세스가 실행 중입니다.

    다른 명령으로 관리 노드를 확인하십시오.

    # Checking port 1186 used by ndb_mgmd
    netstat -plntu

    # Checking the management node is ready
    ndb_mgm
    show

    2단계 - 데이터 노드 설치 및 구성

    이 단계에서는 MySQL 클러스터 소프트웨어를 설치하고 데이터 노드로 구성합니다. 2개의 ubuntu 16.04 서버를 데이터 노드로 사용합니다. IP 주소가 192.168.1.12인 data-node1과 IP 주소가 192.168.1.13인 data-node2입니다.

    ssh를 사용하여 data-node1 서버에 로그인합니다.

    ssh 

    A. 데이터 노드에 MySQL 클러스터 설치

    MySQL 클러스터 소프트웨어를 설치하기 전에 새 패키지 libaio1을 설치하고 새 사용자 및 그룹 mysql을 만들어야 합니다. 이를 위해 루트로 아래 명령을 실행하십시오.

    apt-get install libaio1
    groupadd mysql
    useradd -g mysql mysql

    이제 MySQL 클러스터 패키지 Linux-Generic을 다운로드하고 압축을 풀고 디렉토리 이름을 mysql로 바꿉니다.

    wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
    tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
    mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/

    mysql 디렉토리를 /usr/local/으로 이동하고 해당 디렉토리로 이동합니다.

    mv mysql /usr/local/
    cd /usr/local/mysql/

    시스템 데이터베이스를 생성하기 위한 스크립트를 실행합니다.

    ./scripts/mysql_install_db --user=mysql

    오류가 없으면 mysql 서비스 파일을 /etc/init.d 디렉터리에 복사하고 부팅 시 실행할 mysql 시작 스크립트를 추가합니다.

    cp support-files/mysql.server /etc/init.d/mysql
    systemctl enable mysql

    다음으로 모든 mysql 바이너리 명령을 /usr/local/bin 디렉토리로 이동하고 새 심볼릭 링크를 만듭니다.

    mv bin/* /usr/local/bin/
    rm -rf bin/
    ln -s /usr/local/bin /usr/local/mysql/

    mysql 디렉터리의 소유자를 사용자 root 및 그룹 mysql로 변경하고 데이터 디렉터리를 소유자로 mysql로 변경합니다.

    chown -R root:mysql .
    chown -R mysql data

    B. MySQL 클러스터 데이터 노드 구성

    vim을 사용하여 새 mysql 구성 파일 my.cnf을 만듭니다.

    vim /etc/my.cnf

    아래에 구성 붙여넣기:

    # MySQL Config
    [mysqld]
    datadir=/usr/local/mysql/data
    socket=/tmp/mysql.sock
    user=mysql

    # Run ndb storage engine
    ndbcluster
    # IP address management node
    ndb-connectstring=192.168.1.11

    [mysql_cluster]
    # IP address management node
    ndb-connectstring=192.168.1.11

    # MySQL Pid and Log
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid

    저장 및 종료.

    데이터 노드에 대한 새 디렉토리를 생성하고 소유권을 mysql 사용자로 변경합니다.

    mkdir -p /var/lib/mysql-cluster/
    chown -R mysql /var/lib/mysql-cluster

    다. 데이터 노드에서 MySQL 시작

    아래 명령으로 mysql 서비스를 시작합니다.

    ndbd --initial
    systemctl start mysql

    오류가 없는지 확인하고 결과는 다음과 같습니다(data-node2).

    데이터 노드의 MySQL이 시작됩니다. 이제 다음 명령을 사용하여 MySQL 암호를 구성할 수 있습니다.

    mysql_secure_installation

    또는 MySQL 셸에 액세스합니다.

    mysql -u root -p

    참고:
    data-node2 서버 IP 주소 192.168.1.13에서 이 단계를 다시 실행합니다.

    3단계 - SQL 노드 설치 및 구성

    이 단계에서는 MySQL Cluster 소프트웨어를 설치하고 SQL Node로 구성합니다. 이 노드는 데이터 노드의 데이터베이스에 액세스하는 데 사용됩니다. 설치 과정은 데이터 노드와 동일하지만 SQL Node에서 ndbd 서비스를 실행할 필요는 없습니다.

    ssh를 사용하여 SQL 노드에 로그인합니다.

    ssh 

    A. SQL 노드에 MySQL 클러스터 설치

    libaio1 패키지를 설치하고 새 사용자 및 그룹 mysql을 생성합니다.

    apt-get install libaio1
    groupadd mysql
    useradd -g mysql mysql

    사이트에서 mysql 클러스터 패키지를 다운로드하고 압축을 풀고 이름을 바꿉니다.

    http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
    tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
    mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/

    mysql 디렉터리를 이동합니다.

    mv mysql /usr/local/
    cd /usr/local/mysql/

    mysql_install_db 스크립트를 실행합니다:

    ./scripts/mysql_install_db --user=mysql

    서비스 파일을 복사하고 부팅 시 시작되도록 추가합니다.

    cp support-files/mysql.server /etc/init.d/mysql
    systemctl enable mysql

    모든 mysql 바이너리를 /usr/local/bin 디렉토리로 이동합니다.

    mv bin/* /usr/local/bin/
    rm -rf bin/
    ln -s /usr/local/bin /usr/local/mysql/

    모든 파일 및 디렉토리의 소유자를 변경합니다.

    chown -R root:mysql .
    chown -R mysql data

    B. MySQL 클러스터 SQL 노드 구성

    vim으로 새 my.cnf 구성 파일을 만듭니다.

    vim /etc/my.cnf

    아래 구성을 붙여넣습니다.

    # MySQL Config
    [mysqld]
    datadir=/usr/local/mysql/data
    socket=/tmp/mysql.sock
    user=mysql

    # Run ndb storage engine
    ndbcluster
    # IP address management node
    ndb-connectstring=192.168.1.11

    [mysql_cluster]
    # IP address management node
    ndb-connectstring=192.168.1.11

    # MySQL Pid and Log
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid

    저장 및 종료.

    다. SQL 노드 시작

    systemctl 명령으로 mysql 서비스를 시작하여 SQL 노드를 시작합니다.

    systemctl start mysql

    SQL 노드가 시작되었으므로 이제 MySQL의 암호를 구성할 수 있습니다.

    mysql_secure_installation

    4단계 - 테스트

    SQL 노드에서 새 데이터베이스를 생성하기 위해 테스트합니다.

    mysql -u root -p
    TYPE PASSWORD


    create database nanana;

    데이터베이스가 데이터 노드 서버에 복제되었는지 확인하세요.
    노드가 꺼져 있으면 다른 노드가 SQL 노드의 연결을 처리합니다.

    mysql -u root -p
    TYPE PASSWORD


    show databases;

    관리 노드에서 클러스터 상태 확인:

    ndb_mgm
    show

    5단계 - 추가 팁

    클러스터를 안전하게 다시 시작하고 종료합니다.

    클러스터 관리 노드로 이동하고 아래 명령을 입력하여 클러스터를 종료합니다.

    ndb_mgm
    shutdown

    이 명령은 데이터 노드에서 모든 ndb 서비스를 종료합니다.

    클러스터를 다시 시작하려면 관리 노드에서 아래 명령을 실행할 수 있습니다.

    ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/

    그리고 모든 데이터 노드에서 아래 명령을 실행합니다.

    ndbd
    systemctl start mysql

    그런 다음 SQL 노드에서 mysql 서비스를 시작합니다.

    systemctl start mysql

    이제 MySQL 클러스터가 다시 실행 중입니다.

    참조

    • https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html