IT/AWS, DB

[MariaDB 설치 방법]

집에 가고싶어요 2024. 8. 26. 15:10
728x90

목차

  • 소개 및 개요
  • 기본 구조 및 문법
  • 심화 개념 및 테크닉
  • 실전 예제
  • 성능 최적화 팁
  • 일반적인 오류와 해결 방법
  • 최신 트렌드와 미래 전망
  • 결론 및 추가 학습 자료

소개 및 개요

안녕하세요. 이번 포스트에서는 MariaDB의 설치 방법에 대해 알아보겠습니다. MariaDB는 MySQL에서 파생된 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)으로, 높은 성능과 안정성, 그리고 많은 기능을 제공합니다. 웹 애플리케이션, 데이터 분석, 로그 저장 등 다양한 분야에서 활용되고 있습니다.

MariaDB를 설치하는 방법은 운영체제마다 조금씩 다르지만, 여기서는 Linux에서의 설치 과정을 예로 들어 설명하겠습니다.

먼저, 패키지 매니저를 사용하여 MariaDB를 설치할 수 있습니다. 예를 들어, Ubuntu에서는 다음과 같은 명령어를 사용합니다.


sudo apt update
sudo apt install mariadb-server

위의 명령어는 패키지 리스트를 업데이트하고, MariaDB 서버를 설치합니다.

설치가 완료되면, 다음 명령어를 사용하여 MariaDB 서비스를 시작할 수 있습니다.


sudo systemctl start mariadb

서비스가 정상적으로 시작되었는지 확인하려면 다음 명령어를 사용합니다.


sudo systemctl status mariadb

출력 결과에 active (running)이 표시되면 MariaDB가 정상적으로 실행 중인 것입니다.

초기 설정을 위해 다음 명령어를 실행합니다.


sudo mysql_secure_installation

이 스크립트는 루트 비밀번호 설정, 익명 사용자 제거, 원격 루트 로그인 비활성화 등의 작업을 수행합니다. 프롬프트에 따라 적절한 값을 입력하세요.

이제 MariaDB 설치가 완료되었습니다. 다음 섹션에서는 MariaDB에 접속하여 간단한 SQL 쿼리를 실행해 보겠습니다.

기본 구조 및 문법

MariaDB를 설치하는 방법은 운영체제에 따라 조금씩 다를 수 있습니다. 여기서는 Ubuntu Linux를 기준으로 MariaDB 설치 방법을 설명하겠습니다.

먼저, 아래 명령어를 사용하여 MariaDB를 설치합니다.


sudo apt update
sudo apt install mariadb-server

위 명령어는 패키지 목록을 업데이트하고, mariadb-server 패키지를 설치합니다. 설치가 완료되면 MariaDB 서비스가 자동으로 시작됩니다.

설치가 완료되었으면, 다음 명령어를 사용하여 MariaDB의 보안 설정을 진행할 수 있습니다.


sudo mysql_secure_installation

이 명령어를 실행하면 루트 비밀번호 설정, 익명 사용자 제거, 원격 루트 로그인 비활성화 등의 보안 설정을 진행할 수 있습니다. 설정 과정에서는 각 단계별로 적절한 옵션을 선택해주시면 됩니다.

MariaDB에 접속하려면 다음 명령어를 사용합니다.


sudo mysql -u root -p

위 명령어를 실행하면 MariaDB에 루트 사용자로 접속할 수 있습니다. -p 옵션을 사용하면 비밀번호를 입력할 수 있는 프롬프트가 표시됩니다.

MariaDB에 성공적으로 접속하면 다음과 같은 프롬프트가 표시됩니다.


MariaDB [(none)]>

이제 SQL 문을 입력하여 데이터베이스를 생성하고 관리할 수 있습니다.

다음 섹션에서는 MariaDB에서 데이터베이스와 테이블을 생성하고 관리하는 방법에 대해 자세히 알아보겠습니다.

심화 개념 및 테크닉

위에서 살펴본 MariaDB 설치 방법은 기본적인 내용입니다. 이번 섹션에서는 좀 더 심화된 개념과 테크닉을 코드 예제와 함께 알아보겠습니다.

먼저, MariaDB 설치 시 특정 버전을 지정하여 설치하는 방법입니다. 다음 예제를 참고하세요.

sudo apt-get install mariadb-server-10.5

위 명령어에서는 MariaDB 10.5 버전을 명시적으로 지정하여 설치합니다. 이처럼 버전을 지정하면 원하는 특정 버전의 MariaDB를 설치할 수 있습니다.

다음으로, MariaDB 설정 파일을 수정하여 추가 설정을 적용하는 방법입니다. 다음 예제를 살펴보겠습니다.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack    = 192K
thread_cache_size       = 8
query_cache_limit       = 1M
query_cache_size        = 16M
log_error = /var/log/mysql/error.log
expire_logs_days        = 10
max_binlog_size   = 100M
innodb_buffer_pool_size = 1G
innodb_log_file_size    = 256M

위 예제에서는 MariaDB 설정 파일인 50-server.cnf를 편집하여 다양한 설정을 적용하고 있습니다. innodb_buffer_pool_size를 1GB로, innodb_log_file_size를 256MB로 설정하는 등 성능 관련 설정을 조정할 수 있습니다.

마지막으로, MariaDB 서버의 상태를 확인하고 관리하는 명령어를 소개하겠습니다.

sudo systemctl status mariadb
● mariadb.service - MariaDB 10.5.15 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2023-05-07 10:30:15 KST; 1h 20min ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
    Process: 1191 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
    Process: 1210 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
    Process: 1213 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
   Main PID: 1292 (mariadbd)
     Status: "Taking your SQL requests now..."
      Tasks: 8 (limit: 9406)
     Memory: 64.8M
     CGroup: /system.slice/mariadb.service
             └─1292 /usr/sbin/mariadbd

systemctl status 명령어를 사용하면 MariaDB 서버의 현재 상태를 확인할 수 있습니다. 출력 결과에서는 MariaDB 서비스의 상태, PID, 메모리 사용량 등 다양한 정보를 확인할 수 있습니다.

이상으로 MariaDB 설치와 관련된 심화 개념과 테크닉을 알아보았습니다. 이러한 내용을 활용하면 MariaDB를 보다 효과적으로 설치하고 관리할 수 있을 것입니다. 다음 섹션에서는 MariaDB의 기본적인 사용 방법과 SQL 쿼리 예제를 통해 MariaDB를 활용하는 방법을 살펴보겠습니다.

실전 예제

이번 섹션에서는 MariaDB 설치를 활용한 실제 프로젝트 예시를 단계별로 살펴보겠습니다. 간단한 데이터베이스를 만들고 데이터를 입력, 조회, 수정, 삭제하는 과정을 코드와 함께 알아보겠습니다.

먼저, MariaDB에 접속하여 새로운 데이터베이스를 생성합니다.


CREATE DATABASE myproject;
USE myproject;

위 코드는 'myproject'라는 이름의 데이터베이스를 생성하고, 해당 데이터베이스를 사용하도록 지정합니다.

다음으로, 데이터베이스 안에 테이블을 생성합니다. 예를 들어, 사용자 정보를 저장할 'users' 테이블을 만들어 보겠습니다.


CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  email VARCHAR(100) UNIQUE NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

이 코드는 'users' 테이블을 생성하며, 'id', 'name', 'email', 'created_at' 컬럼을 포함합니다. 'id'는 자동 증가하는 기본 키로 설정되었습니다.

이제 생성된 테이블에 데이터를 입력해 보겠습니다.


INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');
INSERT INTO users (name, email) VALUES ('Jane Smith', 'jane@example.com');

위 코드는 'users' 테이블에 두 명의 사용자 정보를 입력합니다. 입력된 데이터를 조회하려면 다음과 같이 실행합니다.


SELECT * FROM users;

실행 결과:

+----+------------+-------------------+---------------------+
| id | name       | email             | created_at          |
+----+------------+-------------------+---------------------+
|  1 | John Doe   | john@example.com  | 2023-06-08 14:30:00 |
|  2 | Jane Smith | jane@example.com  | 2023-06-08 14:31:00 |
+----+------------+-------------------+---------------------+

위 결과와 같이 입력된 사용자 정보를 확인할 수 있습니다.

이 예제를 통해 MariaDB를 활용하여 데이터베이스를 생성하고, 테이블을 만들어 데이터를 입력하고 조회하는 과정을 간단히 살펴보았습니다. 실제 프로젝트에서는 더욱 복잡한 구조의 데이터베이스와 쿼리를 다루게 될 것입니다.

다음 섹션에서는 MariaDB의 고급 기능과 최적화 방법에 대해 알아보도록 하겠습니다.

성능 최적화 팁

MariaDB의 성능을 최적화하기 위해서는 다음과 같은 팁들을 활용할 수 있습니다.

먼저, 적절한 인덱스를 생성하는 것이 중요합니다. 인덱스는 테이블에서 데이터를 빠르게 검색할 수 있도록 도와줍니다. 다음은 인덱스 생성 예시입니다.


CREATE INDEX idx_user_name ON user (name);

위 코드는 user 테이블의 name 컬럼에 대해 idx_user_name이라는 이름의 인덱스를 생성합니다. 이렇게 하면 name 컬럼을 기준으로 데이터를 빠르게 검색할 수 있게 됩니다.

다음으로, 쿼리 캐시를 활성화하는 것도 성능 향상에 도움이 됩니다. 쿼리 캐시는 이전에 실행된 쿼리 결과를 메모리에 저장하여 동일한 쿼리가 다시 요청되면 빠르게 결과를 반환할 수 있습니다. 쿼리 캐시 활성화 예시는 다음과 같습니다.


[mysqld]
query_cache_type = 1
query_cache_size = 10M

위 설정은 my.cnf 파일에 추가하면 됩니다. query_cache_type을 1로 설정하여 쿼리 캐시를 활성화하고, query_cache_size에 캐시 크기를 지정합니다.

마지막으로, 슬로우 쿼리 로그를 활용하여 느린 쿼리를 식별하고 최적화할 수 있습니다. 다음은 슬로우 쿼리 로그 활성화 예시입니다.


[mysqld]
slow_query_log = 1 
slow_query_log_file = /var/log/mysql/slow_query.log
long_query_time = 2

slow_query_log를 1로 설정하여 슬로우 쿼리 로그를 활성화하고, slow_query_log_file에 로그 파일 경로를 지정합니다. long_query_time은 쿼리 실행 시간이 얼마 이상이면 슬로우 쿼리로 기록할지 설정하는 값입니다. 위 예시에서는 2초로 설정되어 있습니다.

슬로우 쿼리 로그 예시:


# Time: 2023-06-08T10:30:00.000000Z
# User@Host: root[root] @ localhost []
# Query_time: 5.000000  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 1000000
SET timestamp=1686208800;
SELECT * FROM large_table WHERE some_condition;

위 로그는 some_condition을 만족하는 large_table의 모든 행을 검색하는 쿼리가 5초가 소요되었음을 보여줍니다. 이런 식으로 슬로우 쿼리를 식별한 후 해당 쿼리를 최적화하는 작업을 진행할 수 있습니다.

이상으로 MariaDB 성능 최적화를 위한 몇 가지 팁을 살펴보았습니다. 이 밖에도 버퍼 풀 크기 조정, 임시 테이블 설정 최적화 등 다양한 방법들이 있는데, 다음 섹션에서는 이에 대해 더 자세히 알아보도록 하겠습니다.

일반적인 오류와 해결 방법

MariaDB 설치 과정에서 발생할 수 있는 몇 가지 일반적인 오류와 해결 방법을 알아보겠습니다.

1. 의존성 오류 (Dependency Errors):

Error: MariaDB conflict: mariadb-libs is already installed

이 오류는 이전에 설치된 MariaDB와 충돌하는 경우 발생합니다. 해결 방법은 기존의 mariadb-libs 패키지를 제거한 후 설치를 진행하는 것입니다.

sudo yum remove mariadb-libs
sudo yum install MariaDB-server

2. 서비스 시작 오류 (Service Start Errors):

Job for mariadb.service failed because the control process exited with error code.

MariaDB 서비스 시작에 실패한 경우입니다. 로그 파일을 확인하여 오류의 원인을 파악할 수 있습니다.

sudo journalctl -xe

로그 파일에서 오류 메시지를 확인하고 해당 문제를 해결합니다. 대부분의 경우 설정 파일의 오류나 권한 문제로 인해 발생합니다.

3. 인증 플러그인 오류 (Authentication Plugin Errors):

ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded

MariaDB에서 기본 인증 플러그인이 로드되지 않은 경우 이 오류가 발생합니다. 설정 파일에서 인증 플러그인을 명시적으로 지정하면 해결할 수 있습니다.

sudo vim /etc/my.cnf.d/mariadb-server.cnf

설정 파일에 다음 줄을 추가합니다.

[mariadb]
plugin-load-add = auth_socket.so

변경 사항을 저장하고 MariaDB 서비스를 재시작합니다.

sudo systemctl restart mariadb

위의 예시처럼 MariaDB 설치 과정에서 발생할 수 있는 일반적인 오류들을 이해하고 해결 방법을 알아두면 설치를 원활하게 진행할 수 있습니다.

이제 MariaDB의 기본적인 사용법과 SQL 쿼리 예제를 통해 MariaDB를 활용하는 방법을 살펴보겠습니다.

최신 트렌드와 미래 전망

MariaDB의 설치 방법은 지속적으로 발전하고 있습니다. 최신 트렌드로는 Docker를 활용한 설치 방법이 있습니다. Docker를 사용하면 간단한 명령어로 MariaDB를 설치하고 실행할 수 있습니다.


$ docker run --name mariadb -e MYSQL_ROOT_PASSWORD=password -d mariadb:latest

위 명령어는 최신 버전의 MariaDB 이미지를 다운로드하고, 컨테이너 이름을 'mariadb'로 설정하며, 루트 비밀번호를 'password'로 지정합니다. '-d' 옵션은 컨테이너를 백그라운드에서 실행하도록 합니다.

또 다른 트렌드로는 Ansible을 활용한 자동화된 설치 방법이 있습니다. Ansible 플레이북을 작성하여 MariaDB 설치를 자동화할 수 있습니다.


- hosts: all
  tasks:
    - name: Install MariaDB
      yum:
        name: mariadb-server
        state: present

    - name: Start MariaDB service
      service:
        name: mariadb
        state: started
        enabled: yes

위 Ansible 플레이북은 MariaDB 서버 패키지를 설치하고, MariaDB 서비스를 시작하고 활성화합니다. 이를 통해 한 번의 실행으로 여러 서버에 MariaDB를 일관되게 설치할 수 있습니다.

향후에는 Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼을 활용한 MariaDB 배포가 더욱 활발해질 것으로 예상됩니다. Kubernetes를 사용하면 MariaDB 클러스터를 쉽게 구성하고 관리할 수 있습니다.


apiVersion: apps/v1
kind: Deployment
metadata:
  name: mariadb
spec:
  replicas: 3
  selector:
    matchLabels:
      app: mariadb
  template:
    metadata:
      labels:
        app: mariadb
    spec:
      containers:
      - name: mariadb
        image: mariadb:latest
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: password

위 Kubernetes 배포 파일은 3개의 MariaDB 복제본을 생성하고, 'mariadb'라는 레이블을 가진 파드를 선택하여 배포합니다. 각 파드는 최신 버전의 MariaDB 이미지를 사용하며, 루트 비밀번호를 'password'로 설정합니다.

이러한 최신 트렌드와 도구들을 활용하면 MariaDB 설치와 관리가 더욱 효율적이고 간편해질 것입니다. 다음 섹션에서는 MariaDB의 기본적인 사용법과 SQL 쿼리 작성에 대해 살펴보겠습니다.

결론 및 추가 학습 자료

이상으로 MariaDB 설치 방법에 대해 알아보았습니다. 주요 내용을 다시 한번 정리해보면 다음과 같습니다.

먼저, MariaDB 설치를 위해 리포지토리를 추가하는 방법입니다.

sudo apt-get install software-properties-common
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirror.yongbok.net/mariadb/repo/10.5/ubuntu bionic main'

위 명령어들을 차례로 실행하면 MariaDB 공식 리포지토리가 시스템에 추가됩니다.

다음으로, MariaDB를 설치하는 명령어입니다.

sudo apt update
sudo apt install mariadb-server

apt update로 패키지 목록을 업데이트한 후, apt install 명령어로 mariadb-server 패키지를 설치합니다.

마지막으로, 설치한 MariaDB의 보안 설정을 수행하는 명령어입니다.

sudo mysql_secure_installation

위 명령어를 실행하면 루트 비밀번호 설정, 익명 사용자 삭제, 원격 루트 접속 허용 여부 등을 설정할 수 있습니다.

추가로 학습할 만한 자료로는 다음을 추천드립니다.

이제 MariaDB를 성공적으로 설치하고 기본적인 보안 설정까지 마쳤으니, 본격적으로 MariaDB를 사용해볼 차례입니다. 다음 섹션에서는 MariaDB에 접속하는 방법과 간단한 SQL 쿼리 사용법에 대해 알아보겠습니다.



728x90