MariaDB 란?

오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)

MySQL을 소유한 썬 마이크로 시스템즈가 오라클에 인수되면서, MySQL의 라이선스 상태에 반발하여 만들어졌다.

MySQL에서 포크되었으며, 이로 인해 MySQL과 호환성이 높다.


MariaDB의 추가된 주요 기능들

  • Mariadb Galera Cluster (MySQL과는 달리 MariaDB 공식 릴리즈 버전에 포함됨)
  • 새로운 스토리지 엔진 : Aria, XtraDB, TokuDB 등
  • MariaDB Backup (MySQL의 xtrabackup이 MariaDB 공식 릴리즈 버전에 포함됨)

설치 환경

  • CentOS 7
  • cmake 3.9.6
  • MariaDB 10.4.17 / 10.5.8

mysql 계정 생성

[root@localhost work]# useradd -s /sbin/nologin mysql

필수 라이브러리 설치

[root@localhost work]# yum -y install make zlib curl gcc cpp gcc-c++ libtermcap-devel ncurses-devel bzip2-devel gnutls-devel zlib-devel

cmake 설치

cmake 란?

Make의 대용품을 만들기 위한 오픈소스 프로젝트

스스로 기존의 make의 과정을 수행하지 않고 지정한 운영체제에 맞는 make 파일의 생성만을 수행하기 때문에 Meta Make라고도 불린다.

유닉스 계열 OS 중심이던 기존의 Make와는 달리 한번 작성해 두면 유닉스 계열은 물론, 마이크로소프트 윈도우 계열의 프로그래밍 도구도 지원한다

[root@localhost work]# wget https://cmake.org/files/v3.9/cmake-3.9.6.tar.gz
[root@localhost work]# tar zxvf cmake-3.9.6.tar.gz
[root@localhost work]# cd cmake-3.9.6
[root@localhost cmake-3.9.6]# ./bootstrap
[root@localhost cmake-3.9.6]# make
[root@localhost cmake-3.9.6]# make install

MariaDB 다운로드

MariaDB 10.4.17 다운로드

[root@localhost work]# wget https://ftp.harukasan.org/mariadb//mariadb-10.4.17/source/mariadb-10.4.17.tar.gz

MariaDB 10.5.8 다운로드

[root@localhost work]# wget https://ftp.harukasan.org/mariadb//mariadb-10.5.8/source/mariadb-10.5.8.tar.gz

MariaDB 설치

MariaDB 10.4.x와 10.5.x의 설치 과정은 기본적으로 동일하다.

MariaDB에서는 기본적으로 GNUSSL 라이브러리를 이용하여 SSL 기능을 구현한다.

OpenSSL 라이브러리를 사용하길 원한다면 아래와 같이 -DWITH_SSL 컴파일 옵션에 OpenSSL이 설치된 위치를 지정해주면 된다.

ex : OpenSSL 컴파일 설치 위치가 /usr/local/openssl 이라면 -DWITH_SSL=/usr/local/openssl

여기에선 기본적으로 사용하는 GNUSSL 라이브러리를 사용한다.

[root@localhost work]# tar zxvf mariadb-10.4.17.tar.gz
[root@localhost work]# cd mariadb-10.4.17

[root@localhost mariadb-10.4.17]# vi setup.sh

[Character Set을 euckr로 설정하고 싶은 경우]

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=euckr -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_COLLATION=euckr_korean_ci -DWITH_EXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1

[Character Set을 UTF-8로 설정하고 싶은 경우]

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1
[root@localhost mariadb-10.4.17]# chmod 711 setup.sh
[root@localhost mariadb-10.4.17]# ./setup.sh
[root@localhost mariadb-10.4.17]# make -j 4
[root@localhost mariadb-10.4.17]# make install

[root@localhost mariadb-10.4.17]# cd /usr/local/mysql

10.4.x 부터 인증방식이 unix_socket 으로 변경되었다.

따라서 기존의 옵션대로 설치하면 unix_socket 인증방식으로 설정되기 때문에, 기존의 암호 인증방식을 사용하고자 할 경우 다음의 옵션을 추가한다.

--auth-root-authentication-method=normal

변경된 인증 방식과 관련하여 자세한 사항은 다음의 링크 참고

여기서는 기존의 암호 인증 방식으로 설정되게 설치하는 방식으로 진행한다.

[root@localhost mariadb-10.4.17]# ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --auth-root-authentication-method=normal

my.cnf 파일 생성

[root@localhost mariadb-10.4.17]# vi /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
bind-address=0.0.0.0

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/usr/local/mysql/data/mysqld.log
pid-file=/usr/local/mysql/data/mysqld.pid

부팅 이후 자동 실행되게 설정

CentOS 7

[root@localhost mariadb-10.4.17]# vi /usr/lib/systemd/system/mysqld.service
[Unit]
Description=Mysql Service
After=syslog.target
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop

[Install]
WantedBy=multi-user.target
[root@localhost ~]# systemctl enable mysqld.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.

[root@localhost ~]# systemctl list-unit-files | grep mysql
mysqld.service                                enabled

[root@localhost ~]# systemctl restart mysqld.service