MariaDB 사용 가이드
    • PDF

    MariaDB 사용 가이드

    • PDF

    기사 요약

    MariaDB 설치형 서비스 소개

    네이버클라우드 MariaDB 설치형 서비스의 개념과 기본 구조를 설명합니다.

    "MariaDB"는 MySQL과 동일한 소스코드를 기반으로 한 오픈소스 관계형 데이터베이스(RDBMS)인 MariaDB를 이용하고 있습니다.

    MariaDB

    MariaDB는 MySQL 개발자들이 만든 세계에서 널리 사용되는 관계형 데이터베이스입니다. MariaDB는 스토리지 엔진, 플로그인 및 기타 여러 도구를 제공하며, 빠르고 확장 가능한 구조로 되어있어 다양한 용도로 사용할 수 있습니다.

    네이버클라우드 MariaDB 설치형 서비스 구성

    설치형 서비스

    네이버클라우드에서 지원하는 MariaDB 설치형 서비스의 경우 DB 설치에 대해 원활한 운영표준을 제시하는 환경파일을 제공합니다. 이에 관련하여 DB 설치 이외 부분에 대해서는 기술 지원하지 않고 있습니다.

    RPM/APT

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

    RPM Install

    CentOS 7.x with MariaDB에서 사용하는 RPM 설치되는 패키지입니다.

    APT Install

    Ubuntu 16.X with MariaDB에서 사용하는 APT로 설치되는 패키지입니다.

    Recommanded Parameters

    네이버클라우드내의 MariaDB 설치형 이미지에서 표준화하여 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

    테이블스페이스로 사용하는 경우 테이블 Drop시 이미 늘어난 물리 크기는 줄어들지 않기 때문에 테이블 삭제 시 물리 크기 확보를 위해 옵션을 사용합니다.

    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

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

    MariaDB 설치형 서비스 관리

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

    MariaDB 이미지 서버 생성

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

    my.cnf

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

    속성설명
    expire_logs_days = 7log-bin으로 설정된 로그크기가 커지는것을 방지하기 위해 7일간 저장하도록 합니다.
    innodb_file_per_table테이블스페이스로 사용하는 경우 테이블 Drop시 이미 늘어난 물리 크기는 줄어들지 않기 때문에 테이블 삭제지 물리크기 확보를 위해 옵션을 사용합니다.
    innodb_log_file_sizeHeavy Traffic을 들어오는 경우 CheckPoint를 위한 병목을 방지하기 위해 innodb_log_file_size 옵션을 늘려주어 설정합니다.
    Variables을 조정하기 위해서는 DB Restart가 필요함.
    iinnodb_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 해줍니다.

    MariaDB가 설치된 디렉토리는 아래와 같습니다.

    속성설명
    DATADIR/var/lib/mysql/
    SLOW_LOG/var/lib/mysql/*slow.log
    my.cnf/etc/my.cnf - CentOS
    /etc/mysql/my.cnf - Ubuntu.
    • MariaDB의 Error Log는 기본값인 empty로 제공됩니다. 설정이 필요할 경우 my.cnf에서 아래와 같이 추가 후 MariaDB daemon을 재시작해주시면 됩니다.
      log_error=mysqld.err

    서버생성 절차

    MariaDB 서버생성 과정은 아래와 같습니다.

    관리콘솔 접근

    ① 서버를 생성하거나 삭제 설정하기 위해 관리콘솔에 접근하려면 네이버 클라우드 플랫폼에서 [콘솔] 을 클릭합니다.

    ② 콘솔 Services > Compute > Server 메뉴로 이동합니다.

    서버생성

    Step 1. 서버 이미지 선택

    ① 이미지타입 DBMS, DBMS 이미지타입 MariaDB을 각각 선택합니다.

    ② 사용할 서버 이미지의 오른편 [다음] 을 클릭합니다.

    Step 2. 서버 설정

    ① 필요한 정보를 설정합니다.

    [다음] 을 클릭합니다.

    Step 3. 인증키 설정

    인증키 설정 단계에서는 새로운 인증키를 생성하거나 기존 인증키를 그대로 사용할 수 있습니다.

    ① 처음 사용자는 새로운 인증키 생성을 선택하고 인증키 이름을 입력합니다.

    인증키 생성 및 저장을 클릭하고 다운로드된 인증키 파일(.pem)을 안전한 곳에 저장합니다.

    • 다운로드된 인증키 파일(.pem)을 안전한 곳에 저장합니다. 이 파일은 향후 서버의 암호를 만들어 내는데 사용됩니다.
    • 같은 pem 파일을 사용하더라도 각각의 서버에 모두 다른 암호가 생성됩니다 (같은 pem 파일을 이용한 서버라고 하더라도 각각 pem 파일을 업로드해 암호를 다시 생성해야 합니다.)

    [다음] 을 클릭합니다.

    Step 4. 방화벽 설정

    방화벽 설정에서는 ACG(Access Control Group)를 생성하거나 보유 ACG를 선택합니다.

    ① 처음 생성하는 경우 [ACG 생성] 을 클릭합니다.

    ② ACG 이름과 필요한 정보를 입력합니다.

    [추가] 아이콘을 클릭합니다.

    [생성] 을 클릭합니다.

    Step 5. 최종확인

    ① 선택한 내용을 확인한 후에 MariaDB가 설치된 서버를 생성합니다.

    접속 환경 설정하기

    서버에 접속하기 위해서는 SSL VPN의 구매 및 신청이 필요합니다. 허용 포트 설정은 ‘ACG’에서 적용합니다.

    SSL VPN

    네이버 클라우드 플랫폼[Financial]에서 서버에 접속하기 위해서는 SSL VPN을 구매 후 사용해야 합니다. SSL VPN 서비스는 외부에서 네이버 클라우드 플랫폼 내부에 구성된 고객의 네트워크로 암호화된 보안 접속 통신을 제공하는 서비스이며, SSL VPN 환경이 구축되어 있으면, 언제 어디서든 외부에서 도/감청 위협없이 내부 네트워크로 접근을 할 수 있습니다.

    SSL VPN 접속하기

    Financial Cloud의 서비스를 사용하기 위해서는 필수적으로 SSL VPN을 접속해야만 합니다. SSL VPN을 사용하기 위해서는 아래와 같이 수행해야합니다. 자세한 사항은 네이버 클라우드 플랫폼의 SSL VPN 가이드를 참고 부탁 드립니다.

    1. 콘솔에 접속하여, Services > Security > SSL VPN 메뉴로 이동합니다.

    2. [SSL VPN 생성] 버튼을 클릭합니다.

    3. 스펙 및 인증 방식을 선택합니다.

    4. 인증 방식에 따라 사용자를 설정합니다.

    ACG

    ACG는 Access Control Group의 약자로, 서버 간 네트워크 접근 제어 및 관리를 할 수 있는 IP/Port 기반 필터링 방화벽 서비스입니다. 고객은 기존 방화벽(iptables, UFW, 윈도우 방화벽)을 개별적으로 관리할 필요 없이 서버 그룹에 대한 ACG Rule을 손쉽게 설정하고 관리할 수 있습니다.

    ACG는 VPC 당 500개까지 생성할 수 있고 NIC 당 3개의 ACG를 허용합니다. ACG의 규칙은 Inbound / Outbound 각 50개씩 생성 가능합니다. 참고로 VPC는 리전 당 최대 3개까지 생성 가능합니다.

    ACG는 구분 가능한 이름을 가지며, 각각의 설정된 규칙을 가지고 있는 개체(Instance)입니다. ACG 개체에는 Default ACG와 Custom ACG로 구분합니다.

    구분정의상세 설명
    Default ACG각 계정마다 기본 생성되어 있는 ACG* 모든 들어오는 연결(Inbound traffic)을 차단함. (규칙으로 명시되어 있지 않음)
    * 모든 나가는 연결(Outbound traffic)을 허용함. (규칙으로 명시되어 있음)
    * 원격 접속 기본 포트 (Linux - 22, Windows - 3389)에 대한 TCP 허용함. (Default ACG에 규칙으로 추가되어 있음, 삭제가능)
    Custom ACG고객이 자체적으로 생성한 ACG* 모든 Inbound traffic을 차단함. (규칙으로 명시되어 있지 않음)
    * 모든 Outbound traffic을 차단함. (규칙으로 명시되어 있지 않음)
    • 규칙으로 명시되어 있지 않은 경우 사용자에게 보이지는 않지만, 내부적으로 반영되어 처리되고 있는 규칙을 말합니다. (Inbound/Outbound traffic)

    • Load Balancer를 생성하면 Load Balancer 개체에 대한 ACG 그룹이 자동으로 생성됩니다. 사용자에 상관없이 Load Balancer용 ACG 이름은 ‘ncloud-load-balancer’로 동일합니다. 서비스하기 위해서는 Load Balancer가 실제 Bind하는 서버들의 ACG에서, 접근소스를 Load Balancer로 하는 허용 규칙을 추가해야 합니다.

    • ncloud-load-balancer 그룹의 경우 ACG 허용 규칙을 추가한 후에 규칙을 삭제하더라도 VM에 대한 LB의 지속적인 헬스체크 요청이 있으면 허용 규칙이 없어도 VM과 통신이 가능한 경우가 있으므로, 통신을 확실히 차단하려면 연결된 LB의 재시작을 권합니다.

    ACG의 주요 특징

    • VM에 일괄 적용 및 수정, 재사용이 가능하여 관리가 용이
    • 쉬운 ACG 규칙(Rule) 설정 및 관리
    • 서버 및 서버간의 Inbound 네트워크 접근 제어

    ACG 생성하기

    1. Server > ACG 메뉴로 이동합니다.

    2. ACG 메뉴에서 기본 제공되는 'default-acg'가 자동으로 생성되어 있습니다.

    3. [ACG 생성] 버튼을 클릭합니다.

    4. 생성할 ACG 이름을 입력 후 [생성] 버튼을 클릭합니다.

    • ACG는 VPC 당 최대 500개까지 만들 수 있습니다

    생성된 ACG 확인하기

    1. ACG 이름, ACG ID, VPC 이름, 적용서버대수, 메모 내용으로 ACG가 생성됨을 리스트에서 확인할 수 있습니다.

    2. ACG 내용은 Server 메뉴에서 서버 상세정보의 ACG 수정을 통해서도 확인 가능합니다.

    ACG 설정하기

    1. 규칙을 설정할 ACG를 선택하고 [ACG 설정] 버튼을 클릭하여 해당 ACG에 규칙을 설정합니다.

    2. 규칙 설정은 프로토콜, 접근소스, 허용포트를 입력하여 설정합니다.

    3. 규칙 입력 후 [추가] 버튼을 클릭하여 설정한 규칙 내용을 확인합니다.

    4. [적용] 버튼을 클릭해야 최종 적용됩니다.

    ACG 규칙

    • 프로토콜: TCP, UDP, ICMP 중에서 선택
    • 접근 소스: IP 주소 또는 ACG명 입력
      • 모든 IP대역을 포함한 인터넷 전체를 대상으로 오픈 하려는 경우
        예) 0.0.0.0/0
      • 단일 IP 주소를 지정하는 경우
        예) 192.168.10.1/32 또는 192.168.10.1
      • CIDR 입력 시 표기 (네트워크 주소/Subnet bits)
        예) 192.168.77.0/24
        예) 192.168.77.128/25
        예) 192.168.77.192/26
    • 허용 포트: 단일 포트(22) 또는 범위 지정
      • TCP (1~65535까지의 허용 포트 범위)
      • UDP (1~65535까지의 허용 포트 범위)
      • ICMP 타입은 제외

    ACG 규칙 예제

    설명프로토콜접근소스허용포트
    특정 IP에서 ssh 서비스로 접근을 허용TCP192.168.77.1722
    특정 IP대역에서 ssh 서비스로 접근을 허용하는 경우(1)TCP192.168.77.0/2422
    특정 IP대역에서 ssh 서비스로 접근을 허용하는 경우 (2)TCP192.168.77.128/2522
    Test-ACG 라는 이름을 가진 ACG 개체에 할당된 서버들 상호간의 ssh 접근을 허용TCPTest-ACG22
    Load Balancer용 ACG인 Ncloud-load-balancer를 소스로 설정하여, Load Balancer 개체에서 Binding된 실제 웹 서버로의 네트워크 접근을 허용
    ※ 여러 개의 Load Balancer를 생성하더라도 ACG 이름은 동일한 하나의 이름만 사용됩니다.
    TCPncloud-load-balancer80
    특정 IP에서 UDP 22-1025 포트로의 접근을 허용UDP192.168.77.1722-1025
    웹서비스에 대해서는 전체 대상으로 오픈하기TCP0.0.0.0/080

    ACG 규칙 보기

    • ACG를 선택하면 상세 정보Inbound 규칙, Outbound 규칙을 확인할 수 있습니다

    ACG 삭제하기

    1. 삭제하고자 하는 ACG를 선택하고 상단의 [ACG 삭제] 버튼을 클릭합니다.

    • 복수 개의 ACG 삭제를 동시에 수행할 수 없습니다.
    • 서버가 한대라도 ACG에 적용되어 있으면 삭제가 불가합니다.

    2. 를 클릭합니다.

    공인 IP

    공인 IP(Public IP)가 필요한 경우 고객이 지정한 서버에 공인 IP를 할당해 주는 서비스입니다. 공인 IP를 신청하여 서버에 적용하면 고객이 요청한 서버에 할당되고, 공인 IP는 리전별로 리전 내 생성된 서버 수와 동일하게 제공됩니다.

    할당된 공인 IP는 고객의 필요에 따라 고객이 구매한 다른 서버로 변경하여 할당할 수 있습니다. 기존 서버에서 공인 IP를 해제하고 원하는 서버에 할당하면 됩니다. 단, 공인 IP가 위치한 Zone과 서버가 위치한 Zone은 동일해야 합니다.

    공인 IP 신청하기

    1. Server > Public IP 메뉴를 선택합니다.

    2. 신청한 공인 IP가 없으므로 다음과 같은 문구가 표시됩니다.

    • 보유중인 공인 IP가 없습니다. [공인 IP 신청] 버튼을 클릭하여 새로운 공인 IP를 할당받으세요.

    3. 공인 IP를 할당 받으려면 [공인 IP 신청] 버튼을 클릭합니다.

    할당 서버 선택하기

    공인 IP를 할당할 서버를 선택합니다.

    1. 공인 IP를 적용할 서버를 선택합니다.

    • 미할당으로 선택하시면 서버에 할당 안된 공인 IP를 제공합니다.

    2. [다음] 버튼을 클릭하여 적용 서버 이름을 확인합니다.

    3. [생성] 버튼을 클릭합니다.

    • 서버에 미할당되어 생성된 공인 IP는 서버에 할당 기능을 이용하여 추후 서버에 할당할 수 있습니다.

    공인 IP 확인하기

    1. 서버에 할당한 공인 IP를 목록에서 확인합니다.

    • 공인 IP 목록에 공인 IP가 적용된 적용 서버와 함께 표시됩니다.

    2. Server 메뉴의 서버 목록에서도 서버에 할당된 공인 IP가 표시됩니다.

    공인 IP 할당하기

    공인 IP를 할당할 서버를 선택합니다.

    1. 서버에 할당할 공인 IP를 선택하고 [서버에 할당] 버튼을 클릭합니다.

    2. 해당 공인 IP를 할당할 서버를 선택하고 [할당] 버튼을 클릭합니다.

    3. 공인 IP 목록에서 선택한 서버에 할당된 것을 확인할 수 있습니다.

    관리자 비밀번호 확인

    ① 포트 포워딩 설정 이후 상단의 [서버관리 및 설정변경] 버튼을 선택합니다.

    [서버 관리 및 설정 변경] 메뉴에서 관리자 비밀번호 확인을 클릭합니다.

    ③ 파일을 끌어 넣거나 클릭해 내 컴퓨터에 저장된 pem 파일을 업로드합니다.

    [비밀번호 확인] 버튼을 클릭합니다.

    ⑤ 이후 화면에 나온 비밀번호를 인지합니다.

    터미널을 통한 서버접속

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

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

    서버 이미지 생성이후

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

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

    MariaDB 기동/정지및 접속 절차

    • MariaDB 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
        
    • MariaDB Daemon구동 유무는 아래와 같은 명령어로 확인합니다.

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

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

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

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

      mysql> set password=password('패스워드');
      
    • 권장하는 패스워드 기본정책은 아래와 같습니다.

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

    MariaDB 이미지 서버 반납

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

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

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

    3. MariaDB 저장된 Data Directory 삭제

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

    MariaDB 외부접속 허용

    Ubuntu에서 MariaDB을 사용하는 경우 Default Parameter로 인해 Localhost에서만 접속이 가능합니다.

    이에 외부접속이 가능하도록 아래와 같은 예로 가이드 합니다.

    1. MariaDB 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. MariaDB 재시작

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

    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.