본문 바로가기

Cloud/Middleware

[MariaDB] 오픈소스 MariaDB 10.6 설치 및 구성 - Community Server, Red Hat 9

 

DataBase

쉽게 말해, 파일 시스템처럼 데이터를 보관하는 저장소

 

파일 시스템과 뭐가 다르지?

 

파일 시스템은 같은 정보가 담긴 데이터가 여러 파일에 중복되어 저장될 수 있는데,

기업의 데이터는 한 두개가 아니니 자칫 데이터 간의 불일치가 발생할 수 있다.

 

이런 한계점(파일의 종속성)을 해결하고자 나온게 데이터베이스라고 보면 된다.(중복 배제, 일관성 유지 )

 

 

 

 

RDBMS (관계형 데이터베이스 관리 시스템)

 

데이터베이스의 데이터를 조작하고 관리할 수 있는 S/W를 데이터베이스 관리 시스템(DBMS)라고 하고,

데이터의 Key와 값(Value)을 행과 열로 테이블 구조와 같이 표현한 것을 관계형 데이터베이스(RDBMS)라고 한다.

 

 

No. DBMS Database Model Notes
1 Oracle RDBMS  
2 MySQL RDBMS  
3 Microsoft SQL Server RDBMS  
4 Redis NoSQL Open Source

 

이런 식으로 표처럼 데이터를 관리한다고 보면 된다.

Oracle, MySQL, MSSQL, PostgreSQL 등, 우리가 흔히 아는 제품들도 모두 RDBMS !

 

 

 

 

 

MariaDB 란?

 

오픈소스 기반 데이터베이스 관리 시스템(DBMS)

MySQL이 Oracle에 인수되면서 라이센스 문제를 해결하고자 MySQL 개발자들이 개발한 제품

 

 

 


 

1. 설치 파일 다운로드

 

 

설치 URL : https://mariadb.com/downloads/

 

 

설치 파일은 MariaDB 공식 사이트에서 받을 수 있다.

Community가 무료, Enterprise가 유료이다. 난 테스트 용도라 무료 버전으로ㅎㅎ

 

해당 페이지에서 MariaDB 뿐 아니라 Maxsclae, JDBC 모두 받을 수 있다.

 

 

버전과 설치할 OS를 선택하면 되는데,

원하는 버전이 없으면 [Show All Files] 에 들어가서 찾아보면 된다.

 

 

 

 

 

 

이렇게 EOL된 버전까지 다양하게 확인이 가능 !

 

이건 Major 버전이고, 선택하면 Minor 버전을 선택하면 된다.

 

나는 10.6.16 버전로 설치하고 싶어서

Community Server 10.6 → Community Server 10.6.16 으로 접근

 

 

 

 

 

 

 

MariaDB Release Date URL : https://mariadb.org/mariadb/all-releases/

 

제품 버전 Release Date EOS
MariaDB 10.3 2018-05-25 2023-05-25
10.4 2019-06-18 2024-06-18
10.5 2020-06-24 2025-06-24
10.6 2021-07-06 2026-07-06
10.7 2022-02-09 2023-02-09
10.8 2022-05-20 2023-05-20
10.9 2022-08-22 2023-08-01
10.10 2022-11-17 2023-11-01
10.11 2023-02-16 2028-02-16
11.0 2023-06-06 2024-06-06
11.1 2023-08-21 2024-08-21
11.2 2023-11-21 2024-11-21
11.3 2024-02-16 2024-05-16
11.4 2024-05-29 2029-05-29

 

 

MariaDB 버전은 출시일과 EOS를 적절히 고려해서 정하면 된다.

 

 

 

 

 

 

 

 

[MariaDB 파일 경로]

Community Server/ Community Server 10.6/ Community Server 10.6.16

/bintar-linux-systemd-x86_64

 

[의존성 패키지 경로]

Community Server/ Community Server 10.6/ Community Server 10.6.16

/yum/rhel/9/x86_64/rpms

 

※ MariaDB 버전, OS 종류 및 버전에 따라 경로가 모두 다름

 

 

 

아래가 내가 받은 파일들.

 

종류 파일명 설명
MariaDB 파일 mariadb-10.6.16-linux-systemd-x86_64.tar.gz MariaDB, 바이너리 파일 및 스크립트
의존성 패키지 MariaDB-client-10.6.16-1.el9.x86_64.rpm MariaDB 접속 및 쿼리 실행 패키지
MariaDB-common-10.6.16-1.el9.x86_64.rpm MariaDB 공통 사용하는 설정 파일 및 리소스
MariaDB-shared-10.6.16-1.el9.x86_64.rpm MariaDB 접근에 필요한 라이브러리 파일

 

 

원래 compat 의존성 패키지도 같이 다운로드 받는데

Red Hat 9 이상에서는 없어졌다.

 

해당 파일을 MariaDB를 설치할 서버에 업로드 해주면 된다 !

 

 

 

 

 


 

 

2. MariaDB 설치

 

# yum localinstall MariaDB-*

-- 의존성 패키지 설치

 

# tar -zxvf /MARIA/mariadb-*

-- MariaDB 설치

 

 

 

이제 MariaDB가 실제로 담길 데이터 영역을 지정해줘야 한다.

난 MARIA 디렉토리를 만들고 하위에 데이터 경로, 로그 경로를 만들어 주었다.

 

 

 

[MariaDB 기동 환경 구성]

 

# groupadd dba

# useradd -m -G dba maria

# passwd maria

-- MariaDB 전용 계정 및 그룹 생성

 

mkdir -p /MARIA/MARIA_DATA/{DATA,tmp}

# mkdir -p /MARIA/MARIA_LOG/{error,binary,relay,slow,general}

-- 데이터 경로 : /MARIA/MARIA_DATA , 로그 경로 : /MARIA/MARIA_LOG

 

 

# ln -s mariadb-* mariadb

-- 압축 해제한 MariaDB 설치 파일을 mariadb라는 빈 디렉토리로 소프트 링크 생성

 

# chown -R maria:dba /MARIA

※ MariaDB를 기동시킬 계정이 사용할 수 있도록 권한을 꼭 챙겨줘야 한다.

 

 

 

 

 

이제 MariaDB의 구성을 설정해줘야 한다.

위에서 yum 설치 시, 자동으로 /etc 아래에 my.cnf 라는 설정 파일이 생성되어 있어야 한다 !

 

# vi /etc/my.cnf

 

아래는 내 설정인데, 서버 자원이나 DB 구조에 따라 다른 내용이라 면밀히 확인해야 한다.

가장 베스트는 DBA 조언을 구하자.. ★

 

[client]  ## 모든 MariaDB Client 에서 읽는 옵션
socket=/data/MARIA/MARIA_DATA/tmp/maria.sock
default-character-set = utf8mb4

[mysqld] ## MariaDB의 설정 옵션
user=maria

basedir=/data/MARIA/mariadb
datadir=/data/MARIA/MARIA_DATA/DATA/
port=3306
socket=/data/MARIA/MARIA_DATA/tmp/maria.sock
pid-file=/data/MARIA/MARIA_DATA/DATA/maria.pid


# Character set Config
character-set-client-handshake=FALSE
character-set-server=utf8mb4
init_connect=SET collation_connection = utf8mb4_unicode_ci
init_connect=SET NAMES utf8mb4

collation-server = utf8mb4_unicode_ci

lower_case_table_names=1

# Buffer_size Config
join_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=8M
sort_buffer_size=2M

# Timeout
interactive_timeout=28800       #before 600
wait_timeout=28800              #before 600
lock_wait_timeout=120
innodb_lock_wait_timeout=50

# Common Config
server-id=102
back_log=10240
ft_min_word_len=4
max_allowed_packet=128M
max_heap_table_size=1G
max_connections=10240
performance_schema=1
skip-external-locking
skip-name-resolve=1
max_length_for_sort_data=1024
tmp_table_size=1G
table_open_cache=10240
table_definition_cache=10240
transaction-isolation= READ-COMMITTED
open_files_limit = 65535

# Thread
thread_cache_size=32    #cpu core = 16
thread_handling=pool-of-threads

# Query Cache Disable
query_cache_type=0
query_cache_size=0

# Log Config
log-error=/data/MARIA/MARIA_LOG/error/maria.err
slow_query_log_file=/data/MARIA/MARIA_LOG/slow/mysql-slow-query.log
slow_query_log=1
long_query_time=2

# Innodb config
innodb_buffer_pool_size=15G ## Physical Memory 25%~30%
innodb_data_file_path=ibdata1:1G;ibdata2:1G;ibdata3:1G;ibdata4:1G;ibdata5:1G:autoextend
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_log_buffer_size=128M
innodb_log_file_size= 256M
innodb_log_files_in_group=5
innodb_thread_sleep_delay=0
innodb_fast_shutdown
innodb_autoinc_lock_mode=1
innodb_thread_concurrency=0
innodb_read_io_threads=8
innodb_write_io_threads=8
innodb_io_capacity=2000
innodb_open_files=65535
innodb_purge_threads=8
innodb_flush_log_at_trx_commit=1
#innodb_file_format=Barracuda

# MyISAM Config
bulk_insert_buffer_size=64M
key_buffer_size=128M
myisam_max_sort_file_size=10G
myisam_recover
myisam_repair_threads=1
myisam_sort_buffer_size=64M

# Replication related settings
log_bin_trust_function_creators=1
log-bin=/data/MARIA/MARIA_LOG/binary/maria-bin
relay-log=/data/MARIA/MARIA_LOG/relay/relay-log
expire_logs_days=7
max_binlog_size=1G
sync_binlog=1
binlog_format=mixed
binlog_cache_size=1M
read_only=1  ##slave_only

gtid_strict_mode=ON

 

 

요약하면, MariaDB 데이터/로그가 담길 위치와 사용 User, Buffer 메모리값 지정,

DB 커넥션 최대값, 슬로우 쿼리 기준 등 기본적인 환경을 구성해준다고 보면 된다.

 

아래 공식 KB를 통해 확인하면 참고가 된다.

 

URL : https://mariadb.com/kb/en/configuring-mariadb-with-option-files/

 

 

 

 

 

[MariaDB 설치 스크립트 실행]

 

# MARIA/mariadb/scripts/mysql_install_db --user=maria

-- MariaDB 설치 파일에 담긴 실제 설치 스크립트 실행

 

실행되면, /MARIA_DATA 및 /MARIA_LOG

경로 내에 파일이 정상적으로 생성되어 있는지 확인이 가능하다.

 

 

 

 

 

 

[MariaDB 프로세스 기동]

 

이제 설치한 MariaDB를 실제로 기동해야 한다 !

systemd에 기동할 수 있는 파일이 본 파일에 담겨있다.

 

# cp /MARIA/mariadb/support-files/mysql.server /etc/rc.d/init.d/mariadb

혹은

# cp /MARIA/mariadb/support-files/mysql.server /etc/systemd/system/mariadb.service

 

마찬가지로 권한 챙겨두기

# chown maria:dba mariadb (혹은 mariadb.service)

 

 

 

 

원본은 기본 경로와 데이터 경로가 공란이라, 아래처럼 직접 입력해줘야 한다.

 

# vi /etc/rc.d/init.d/mariadb

..

basedir=/data/MARIA/mariadb
datadir=/data/MARIA/MARIA_DATA/DATA/

..

 

 

 

# systemctl start mariadb

# systemctl status mariadb

-- MariaDB 기동하면 정상적으로 성공 !

 

 

이제 MariaDB의 초기 보안 설정을 위한 스크립트를 실행시켜야 한다.

 

# cd /MARIA/mariadb/bin

# ./mariadb-secure-installation --basedir={데이터 경로} --socket={소켓 경로}

 

내 결과 : Failed !

주륵..

 

 

 

 

 

ㅋㅋ 나의 경우, 의존성 파일이 없어 실패하는 문구가 떴다. (libncurses.so.5, libtinfo.so.5)

이건 RHEL 9 이상에서 5 버전이 제공되지 않고 libncurses.so.6, libtinfo.so.6 버전을 사용해서 발생한다.

 

그럼 5 버전을 설치해야 하나...?

찾아봤더니, 지금 있는 6 버전을 링크하여 5 버전을 만들어주면 된다.

 

# ln -s "/usr/lib64/libncurses.so.6.2" "/usr/lib64/libncurses.so.5"
# ln -s "/usr/lib64/libtinfo.so.6.2" "/usr/lib64/libtinfo.so.5"

 

# ./mariadb-secure-installation --basedir={데이터 경로} --socket={소켓 경로}

-- 이제 다시 실행해주면 정상적으로 실행된다 ㅎ

 

 

-----

 

 


Enter current password for root (enter for none):

-- 패스워드가 아직 없으므로 공란으로 Enter

 

Switch to unix_socket authentication [Y/n] : Y

-- MariaDB 실행 시 통신 소켓 생성 여부

 

Change the root password? [Y/n] : Y

-- DB ROOT 패스워드 설정. Y 선택 후, 패스워드 입력해주면 된다.

 

Remove anonymous users? [Y/n] : Y

-- 익명의 접근을 막을 것인가? 당연히 Y

 

Disallow root login remotely? [Y/n] : Y

-- DB ROOT 원격을 막을 것인지? 보안을 위한 Y

 

Remove test database and access to it? [Y/n] : Y

-- Test 용으로 생성된 데이터베이스를 삭제할 것인지. Y

 

Reload privilege tables now? [Y/n] : Y

-- 현재 설정한 값을 적용하겠다.

 

 

 

 

이제 MariaDB 접속해보고 버전이나 환경을 확인해볼 수 있다.

기본적인 설치 완료 !