MySQL 서버 이미지 사용 가이드
    • PDF

    MySQL 서버 이미지 사용 가이드

    • PDF

    Article Summary

    Classic/VPC 환경에서 이용 가능합니다.

    MySQL 설치형 서비스 소개

    네이버 클라우드 플랫폼 MySQL 설치형 서비스의 개념과 기본 구조를 설명합니다.
    네이버 클라우드 플랫폼은 세계에서 가장 많이 쓰이는 오픈 소스 관계형 데이터베이스(RDBMS)인 MySQL을 지원합니다.

    MySQL

    전세계에서 가장 인기 있고, 많이 사용하고 있는 오픈소스 기반의 관계형 데이터베이스 시스템(Relational Database Management System, 이하 RDBMS)입니다. 다른 RDMBS와 마찬가지로 데이터베이스를 생성하고 테이블, 칼럼 단위의 구조를 사용하여 레코드 단위의 데이터를 조회/변경/추가/삭제합니다. 별도의 GUI를 제공하지 않으며, 주로 CLI(Command Line Interface)를 사용하여 관리하고, GUI 기반의 관리를 위해 MySQL에서 제공하는 Workbench나 Third Party-Tool을 사용합니다.

    2008년 Sun이 MySQL AB를 인수한 후 2010년 Oracle이 Sun을 인수하면서 현재 MySQLEnterprise/Community Version의 모든 권리는 Oracle이 소유하고 있습니다.

    네이버클라우드에서 제공하는 MySQL 설치형 서비스에서는 MySQL Community Edition(GPL)을 제공하여 Basic Install 수준의 기 설치된 이미지를 지원합니다.

    네이버 클라우드 플랫폼 MySQL 설치형 서비스 구성

    설치형 서비스

    네이버클라우드에서 지원하는 MySQL 설치형 서비스의 경우 환경파일과 MySQL Daemon 및 Startup 상태를 제공합니다. 환경파일을 통해 DB 설치에 대한 운영표준을 확인할 수 있으며, MySQL Daemon 및 Startup 상태를 통해 CLI 형태의 모니터링 Binary를 포함한 DB 상태를 볼 수 있습니다. 이에 관련하여 DB 설치 이외 부분에 대해서는 기술 지원하지 않고 있습니다.

    RPM/APT

    MySQL 설치 방법에는 Source Compile 설치 방법, RPM/APT 설치 방법, Binary 설치 방법이 있으며, 네이버클라우드에서는 Normal Install 방법인 RPM(APT) 설치 이미지를 제공합니다. RPM(APT)에서 사용하는 .repo 파일은 MySQL에서 공식적으로 제공하는 파일을 사용하여 설치를 진행하며 Repo에서 제공하는 Latest Version을 기본으로 하여 서버 이미지에 포함하여 제공합니다.

    RPM Install

    CentOS 7.x with MySQL에서 사용하는 RPM 설치되는 패키지는 아래와 같이 구성됩니다.

    MySQL 설치 및 실행에 관련되어 OS Default 설정에서 추가로 설치되는 패키지입니다.

    • mysql-server
    • mysql-devel
    • libmysqlclient-dev
    • build-essential

    APT Install

    Ubuntu 14.X/16.X with MySQL에서 사용하는 APT로 설치되는 패키지는 아래와 같이 구성됩니다.

    MySQL 설치 및 실행에 관련되어 OS Default 설정에서 추가로 설치되는 패키지입니다.

    • mysql-server
    • libmysqlclient-dev

    Recommanded Parameters (5.6/5.7 공통)

    네이버 클라우드 플랫폼내의 MySQL 설치형 이미지에서 표준화 된 Recommanded Parameter는 아래와 같이 구성됩니다.

    • innodb_file_per_table
    • innodb_log_file_size = 512M
    • innodb_log_files_in_group = 2
    • default_storage_engine=InnoDB
    • query_cache_type = ON
    • query_cache_size = 0M
    • sysdate-is-now

    innodb_file_per_table

    InnoDB 테이블 생성 시 InnoDB Global Tablespace를 사용하면, 테이블 삭제 시 이미 늘어난 물리 크기는 줄어들지 않습니다.
    innodb_file_per_table 옵션을 사용하면 InnoDB 테이블 생성 시 테이블당 파일을 생성하고 테이블 삭제 시 해당 파일이 삭제되어 물리 공간을 확보할 수 있습니다.

    Innodb_log_file_size/innodb_log_files_in_group

    Heavy Traffic이 들어오는 경우 CheckPoint를 위한 병목 현상을 방지하기 위해 innodb_log_file_size 옵션을 늘려서 설정합니다.
    해당 Variables을 조정하기 위해서는 DB Restart가 필요합니다.

    default_storage_engine

    Online-DDL 및 Transction 사용이 가능한 InnoDB로 표준 지정합니다.

    query_cache_type/query_cache_size

    DB 기동 후 query_cache를 사용자가 동적으로 ON/OFF할 수 있도록 ON/0으로 설정합니다. 이후 서비스 상황에 맞도록 조정합니다.

    sysdate-is-now

    ysdate를 사용하는 경우 Replication 구성에서 Master-Slave 간의 데이터 처리 시간이 다를 경우 Time Type 데이터가 다를 수 있어 sysdate의 경우 자동으로 now를 replace합니다.

    MySQL 설치형 서비스 관리

    MySQL 설치형 서비스에서 관련되는 관리 방법을 설명합니다.

    MySQL 이미지 서버 생성

    MySQL이 설치된 인스턴스 서버를 생성하면 아래와 같이 네이버클라우드에 표준화된 my.cnf의 환경을 가진 MySQL Daemon이 Startup되어 생성된 후 Daemon 기동까지 완료된 후 제공됩니다.

    my.cnf

    my.cnf의 Parameter설명은 아래와 같습니다.

    속성설명
    expire_logs_days = 7log-bin으로 설정된 로그 크기가 커지는 것을 방지하기 위해 7일간 저장
    innodb_file_per_tableInnoDB 테이블 생성 시 InnoDB Global Tablespace를 사용하면, 테이블 삭제 시 이미 늘어난 물리 크기는 줄어들지 않음
    innodb_file_per_table 옵션을 사용하면 InnoDB 테이블 생성 시 테이블당 파일을 생성하고 테이블 삭제 시 해당 파일이 삭제되어 물리 공간을 확보함
    innodb_log_file_sizeHeavy Traffic이 들어오는 경우 CheckPoint로 인한 병목을 방지하기 위해 innodb_log_file_size 옵션을 늘림
    Variables을 조정하기 위해서 DB Restart가 필요
    innodb_log_files_in_groupinnodb_log_file의 개수를 지정. Rotation을 위해 2개 이상 권고
    default_storage_engineOnline-DDL 및 Transction 사용이 가능한 InnoDB로 표준 지정
    query_cache_type
    query_cache_size
    DB 기동 후 query_cache를 사용자가 동적으로 ON/OFF할 수 있도록 ON/0으로 설정. 이후 서비스 상황에 맞도록 조정
    sysdate-is-nowsysdate를 사용하는 경우 Replication 구성에서 Master-Slave 간의 데이터 처리 시간이 다를 경우 Time Type 데이터가 다를 수 있어 sysdate의 경우 자동으로 now를 replace
    log_timestamps = SYSTEM(5.7 only)MySQL 5.7에서 LogTime이 UTC으로 되어있어 SYSTEM Local TIME으로 변경

    MySQL 설치된 디렉터리는 아래와 같습니다.

    속성설명
    DATADIR/var/lib/mysql/
    SLOW_LOG/var/lib/mysql/*slow.log
    ERROR_LOG/var/log/mysqld.log - CentOS

    /var/log/mysql/error.log - Ubuntu
    my.cnf/etc/my.cnf - CentOS

    /etc/mysql/my.cnf - Ubuntu.
    sqlstatus_nCloud/usr/bin/sqlstatus_nCloud

    서버 생성 절차

    MySQL 서버 생성 과정은 아래와 같습니다.
    서버 생성 가이드를 참조해 주십시오.

    www.ncloud.com 접속 및 Login

    1. 페이지 우측 상단 [콘솔] 을 선택하여 콘솔에 접속해 주십시오.

    2. Services > Compute > Server 메뉴로 이동해 주십시오.

    3. [서버 생성] 아이콘을 클릭해 주십시오.

    서버 생성

    Step 1. 서버 이미지 선택

    1. 이미지타입 DBMS, DBMS 이미지타입 MySQL을 각각 선택해 주십시오.

    2. OS Version에 해당하는 MySQL Version을 체크한 후 [다음] 버튼을 클릭해 주십시오.

    3. 팝업 창의 안내를 확인해 주십시오.

    4. [확인] 버튼을 클릭해 주십시오.

    Step 2. 서버 설정

    1. 서버타입과 원하는 요금제를 선택해 주십시오.

    Step 3. 인증키 설정

    1. 사용자의 인증키를 선택해 주십시오.

    Step 4. 방화벽 설정

    1. 보유하고 있는 ACG를 선택하거나 신규로 생성해 주십시오.

    Step 5. 최종확인

    1. 선택한 내용를 확인한 후 [서버 생성] 버튼을 클릭해 주십시오.

    서버접속 설정 및 확인

    포트 포워딩 설정

    포트 포워딩 이용 가이드를 참조해 주십시오.

    1. 서버 생성 이후 상단의 [포트 포워딩 설정] 버튼을 클릭해 주십시오.

    2. 아래 화면의 포트 포워딩 설정에서 ssh접속을 위한 외부포트를 등록해 주십시오.

    3. 외부포트 등록 후 [추가] 를 클릭해 주십시오.

    4. [적용] 을 클릭해 주십시오.

    관리자 비밀번호 확인

    1. 포트 포워딩 설정 이후 서버 목록 상단의 [서버관리 및 설정변경] 버튼을 선택해 주십시오.

    2. 이후 팝업 메뉴에 관리자 비밀번호 확인을 선택해 주십시오.

    3. 관리자 비밀번호 확인창에서 파일선택으로 인증키 파일을 선택해 주십시오.

    4. [비밀번호 확인] 버튼을 클릭해 주십시오.

    5. 이후 화면에 나온 비밀번호를 인지해 주십시오.

    ACG 설정

    MySQL이 설치된 인스턴스 서버에 접근할 수 있도록 DB 서버의 ACG를 설정합니다.

    database-database-1-1_acg-setting-01_ko

    database-database-1-1_acg-setting-02_ko

    database-database-1-1_acg-setting-03_ko

    • 웹 서버 또는 응용 애플리케이션에서 DB 서버에 접근하려면 접근을 원하는 서버 IP 주소 또는 서버가 속한 ACG를 MySQL 서버 이미지와 함께 생성된 ACG에 추가해야 합니다.
    • ssh 로 서버 접근을 위해서는 22 포트를 허용해야 합니다.
    • MySQL 접속을 위해선 3306 포트를 허용해야 합니다.
    • 자세한 ACG 설정 및 접근 방법은 ACG 사용 가이드를 참조해 주십시오.

    터미널을 통한 서버접속

    터미널프로그램을 사용하여 아래와 같이 접속합니다.

    • PORT : 포트 포워딩으로 설정한 포트번호
    • 공인IP : 포트포워딩 화면에 안내된 서버 접속용 공인IP
    • 패스워드 : 관리자 비밀번호에 출력된 패스워드(초기 패스워드는 반드시 변경합니다.)
    ssh -p [PORT] root@[공인IP]
    

    서버 이미지 생성이후

    1. 서버 생성 이후 바로 사용하지 않을 경우 보안 위험을 예방하기 위해 MySQL Daemon을 ShutDown합니다.

    2. 생성된 MySQL의 경우 패스워드가 설정되지 않았기 때문에 반드시 패스워드 설정을 합니다.

    MySQL 기동/정지 및 접속 절차

    • MySQL Daemon 기동 및 정지는 아래와 같은 명령어로 실행합니다.

    • CentOS

      shell> /sbin/service mysqld start
      shell> /sbin/service mysqld stop
      
    • Ubuntu

      Shell> /usr/sbin/service mysql start
      Shell> /usr/sbin/service mysql stop
      
    • MySQL Daemon구동 유무는 아래와 같은 명령어로 확인합니다.

      Shell> ps -ef | grep mysqld
      
      • 결과: mysqld/mysqld 프로세스가 보여야 합니다.
    • 네이버클라우드에서 생성한 MySQL은 아래 명령어로 접속합니다.

      Shell> mysql -uroot
      
    • MySQL Password정책에 따라 초기 패스워드는 지정되지 않습니다.

    • root Password의 경우 설정하지 않으므로 보안 침해 방지를 위해 최초 접속 시 반드시 패스워드 변경을 합니다.

    • root 패스워드는 아래 명령어를 사용하여 변경합니다.

      • MySQL 5.6
        mysql> set password=password('패스워드');
        
      • MySQL 5.7
        mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '패스워드';
        
    • MySQL Built-in Password 기본 정책은 아래와 같습니다.

      • 최소 길이 8자 이상
      • 특수문자 1개 이상
      • 숫자 1개 이상
      • 대소문자 조합 1개 이상

    MySQL 이미지 서버 반납

    네이버클라우드에서 MySQL이 생성된 서버 반납 시 아래와 같은 절차 이후 반납하기를 권장합니다.

    1. MySQL에서 저장한 데이터 백업

      • 백업된 데이터의 경우 Download이후 별도 보관
    2. MySQL Daemon 정지

    3. mysql이 저장된 Data Directory 삭제

      • 예: rm ‐rf /var/lib/mysql
    4. 네이버클라우드 콘솔에서 [정지] > [반납] 순서로 선택하여 반납을 진행합니다.

    MySQL 외부접속 허용

    Ubuntu에서 MySQL을 사용하는 경우 Default Parameter로 인해 Localhost에서만 접속이 가능합니다.
    이에 외부접속이 가능하도록 아래와 같은 예로 가이드합니다.

    1. MySQL DB 접속

    2. 계정 권한 부여
      예: GRANT ALL PRIVILEGES ON \*.\* to '계정명'@'%' IDENTIFIED BY '비밀번호';

    3. 환경파일 수정
      예: sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

    4. bind-address 주석처리

    database-1-115_ko

    1. MySQL 재시작

    SQLSTATUS

    네이버클라우드에서 제공하는 MySQL 서비스에는 CLI(Command Line Interface) 형태의 모니터링 프로그램이 제공됩니다.

    • 해당 프로그램은 Ncloud 서버 이외에 외부 유출 및 임의로 변경이나 변조하는 경우를 금지하고 있습니다.

    개요

    MySQL의 내부 Status를 1초 단위로 볼 수 있도록 Binary 형태로 제공합니다.
    1초간의 MySQL Status를 Display를 하여 Real-Time으로 DB의 상태 변화를 볼 수 있습니다.

    사용법

    sqlstatus_nCloud에서 사용할 계정 생성(Default 계정으로 포함)

     GRANT PROCESS, SHOW DATABASES, SUPER, EXECUTE, REPLICATION CLIENT ON *.* TO 'sqlstatus_ncloud'@'127.0.0.1' IDENTIFIED BY PASSWORD '*AB9C7542BD3FE96F5342F2A616D030CF4494EB44';
    

    설치 경로: /usr/bin/sqlstatus_nCloud

    기본 3306 포트 사용 시: sqlstatus_nCloud

    3306 이외 사용자 Port 사용 시: sqlstatus_nCloud 포트번호

    사용하지 않을 경우 Default 계정을 삭제해도 됩니다.(DROP USER sqlstatus\_ncloud@127.0.0.1;)

    사용자 화면

    database-database-1-1_user-view

    모니터링 항목 설명

    속성설명
    Portsqlstatus_nCloud에서 접속하는 DB 포트정보
    Time모니터링 시간
    Conn현재 DB에 접속하는 Connection Count
    RunDB에 Running 중인 Thread Count
    현재 DB에서 쿼리를 처리하는 Thread 수
    AbortDB에 접속 실패하는 Count
    max_connection 수를 초과하거나, DB 계정테이블에 등록되지 않는 사용자가 접속할 때 수를 표시
    SelectDB에서 처리하는 SELECT Count
    UpdateDB에서 처리하는 UPDATE Count
    InsertDB에서 처리하는 INSERT Count
    DeleteDB에서 처리하는 DELETE Count
    ReplaceDB에서 처리하는 REPALCE Count
    QcacheQuery Cache를 통해 처리하는 쿼리 Count
    CallProcedure/Function을 사용하여 처리하는 쿼리 Count
    QPSDB에서 처리된 쿼리의 Total Count
    SlaveReplication 구성된 SlaveDB의 복제지연 시간
    Replication이 아닐 경우 Default 0으로 표시
    userCPU normal processes executing in user mode
    systemCPU processes executing in kernel mode
    iowaitCPU waiting for I/O to complete
    Slow_querieslong_query_time에 지정된 수보다 오래 실행되는 쿼리 Count
    Sumsqlstatus를 실행한 이후 발생된 SlowQuery Count
    Default Parmeter는 10초이며 아래명령어로 변경이 가능 (단위 Sec)
    mysql> set global long_query_time=1

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.