MariaDB

MariaDB는 MySQL DB와 매우 유사하지만(뿌리가 같다) 이제 조금은 각자 다른 길을 걸어가고 있다. MariaDB에 대한 궁금증도 늘 갖고 있던 터라, MariaDB 매뉴얼도 종종 읽어보고자 한다.

테스트 환경
- vagrant
- OS: Ubuntu 20.04
- DB: MariaDB 10.6.4
https://app.vagrantup.com/bento/boxes/ubuntu-20.04

설치 사전 준비

오늘 살펴볼 설치 방법은 바이너리 타르볼을 이용한 설치이다.
https://mariadb.com/kb/en/installing-mariadb-binary-tarballs

바이너리 타르볼 다운로드

설치 환경에 맞고, 희망 설치버전을 찾아서 다운로드를 받는다.
https://downloads.mariadb.org/

나는 리눅스 환경에 바이너리 타르볼 형태로, 10.6.4 stable 버전을 다운로드 받았다.
파일을 다운로드 해서 서버에 업로드 해도 되고, 서버에서 외부 통신이 가능하다면 wget으로 직접 다운로드 받아도 된다.

wget https://downloads.mariadb.org/f/mariadb-10.6.4/bintar-linux-systemd-x86_64/mariadb-10.6.4-linux-systemd-x86_64.tar.gz

유저 및 디렉토리 생성

MariaDB를 세팅할 OS 유저와 디렉토리를 세팅해준다.

groupadd mysql
useradd -g mysql mysql
cd /usr/local
tar -zxvpf mariadb-10.6.4-linux-systemd-x86_64.tar.gz
ln -s mariadb-10.6.4-linux-systemd-x86_64 mysql

my.cnf 파일 작성하기

my.cnf 컨피그 파일을 작성해준다.

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

위 페이지에 가면 my.cnf의 샘플 및 각종 옵션들을 확인할 수 있다.
my.cnf 파일은 일반적으로 /etc/my.cnf 에 디폴트값으로 위치하게 된다. (* 변경 가능)

아래와 같이 최소한의 정보만 일단 기입해보았다.

[client-server]
port=3306

# This will be passed to all MariaDB clients
[client]

# The MariaDB server
[mysqld]
# Directory where you want to put your data
datadir=/usr/local/mysql/data

# This is the prefix name to be used for all log, error and replication files
log-basename=mariadb

설치

DB 초기 설치

아래와 같이 초기 세팅을 해준다.

cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql

mysql_install_db를 정상적으로 수행했을 시, 결과 로그는 아래와 같이 찍힌다.

./scripts/mysql_install_db --user=mysql
Installing MariaDB/MySQL system tables in '/usr/local/mysql/data' ...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system


Two all-privilege accounts were created.
One is root@localhost, it has no password, but you need to
be system 'root' user to connect. Use, for example, sudo mysql
The second is mysql@localhost, it has no password either, but
you need to be the system 'mysql' user to connect.
After connecting you can set the password, if you would need to be
able to connect as any of these users with a password and without sudo

See the MariaDB Knowledgebase at https://mariadb.com/kb or the
MySQL manual for more instructions.

You can start the MariaDB daemon with:
cd '.' ; ./bin/mysqld_safe --datadir='/usr/local/mysql/data'

You can test the MariaDB daemon with mysql-test-run.pl
cd './mysql-test' ; perl mysql-test-run.pl

Please report any problems at https://mariadb.org/jira

The latest information about MariaDB is available at https://mariadb.org/.
You can find additional information about the MySQL part at:
https://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/

디렉토리 권한 설정

chown -R root .
chown -R mysql data

DB 기동

아래와 같이 DB 기동을 해준다. user나 defaults-file(my.cnf)을 명시해서 기동할 수도 있다.

./bin/mysqld_safe --user=mysql &
or
./bin/mysqld_safe --defaults-file=~/.my.cnf --user=mysql &

기동 시 에러로그에는 아래와 같이 로그가 기록된 것을 볼 수 있다.

210807 03:39:06 mysqld_safe Starting mariadbd daemon with databases from /usr/local/mysql/data
2021-08-07  3:39:06 0 [Note] /usr/local/mysql/bin/mariadbd (server 10.6.4-MariaDB) starting as process 13257 ...
2021-08-07  3:39:06 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2021-08-07  3:39:06 0 [Note] InnoDB: Number of pools: 1
2021-08-07  3:39:06 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2021-08-07  3:39:06 0 [Note] InnoDB: Using Linux native AIO
2021-08-07  3:39:06 0 [Note] InnoDB: Initializing buffer pool, total size = 134217728, chunk size = 134217728
2021-08-07  3:39:06 0 [Note] InnoDB: Completed initialization of buffer pool
2021-08-07  3:39:06 0 [Note] InnoDB: 128 rollback segments are active.
2021-08-07  3:39:06 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2021-08-07  3:39:06 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2021-08-07  3:39:06 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2021-08-07  3:39:06 0 [Note] InnoDB: 10.6.4 started; log sequence number 41349; transaction id 14
2021-08-07  3:39:06 0 [Note] InnoDB: Loading buffer pool(s) from /usr/local/mariadb-10.6.4-linux-systemd-x86_64/data/ib_buffer_pool
2021-08-07  3:39:06 0 [Note] Plugin 'FEEDBACK' is disabled.
2021-08-07  3:39:06 0 [Note] Server socket created on IP: '0.0.0.0'.
2021-08-07  3:39:06 0 [Note] Server socket created on IP: '::'.
2021-08-07  3:39:06 0 [Note] InnoDB: Buffer pool(s) load completed at 210807  3:39:06
2021-08-07  3:39:06 0 [Note] /usr/local/mysql/bin/mariadbd: ready for connections.
Version: '10.6.4-MariaDB'  socket: '/tmp/mysql.sock'  port: 3306  MariaDB Server

PATH 잡기

이건 설치에 반드시 필요한 과정은 아니나, 편의성을 위해 PATH를 등록해주는 것이 좋다.

사용하고 있는 쉘의 프로필에 아래와 같이 PATH를 등록해주자. mysql client 접속 시나 mysqladmin, mysqldump 등 MariaDB 관련 유틸리티를 해당 경로에 직접 들어가지 않고 바로 실행시킬 수 있어 편리하다.

export PATH=$PATH:/usr/local/mysql/bin/

설치 트러블 슈팅

mysql 접속 시 아래와 같은 에러가 발생할 경우가 있다.

mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
https://askubuntu.com/questions/1278461amysqlerror-while-loading-shared-libraries

아래와 같이 해당 패키지를 설치해준다.

apt-get install libncurses5

패키지 설치 후 DB에 정상 접속 되는 것을 확인할 수 있다.

mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.6.4-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

날짜 내용
2021.08.07 최초 글 작성