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 접속해보고 버전이나 환경을 확인해볼 수 있다.
기본적인 설치 완료 !
'Cloud > Middleware' 카테고리의 다른 글
[MariaDB] 10.4 버전 이상 인증 방식 주의 사항, 인증 없이 접근하는 root 사용자 (0) | 2024.07.18 |
---|---|
[MariaDB] MariaDB/Maxscale 버전 업그레이드 (0) | 2024.06.21 |
[Apache/Tomcat] Apache Header 및 Tomcat 정보 누출 방지(IT 보안) (0) | 2024.06.18 |
[Redis] Redis 비밀번호 설정하기(Linux 환경) (4) | 2024.05.07 |
[MariaDB] Too many open files 조치 방법 (4) | 2024.03.22 |