Linux Server

[Linux]Ubuntu 20.04 웹 서버 구축(2) - MariaDB 설치

톰아저씨의 오두막 2021. 7. 1. 17:22

[Linux]Ubuntu 20.04 웹 서버 구축(2) - MariaDB 설치

[Linux] Ubuntu 20.04 Web Server Construction - MariaDB Installation

Ubuntu 20.04 and MariaDB

 

MariaDB 개요

MariaDB의 기원은 MySQL Community Code Base 입니다. 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS) 으로 MySQL과 동일한 코드를 기반으로 하고 있으며, GPL v2 라이센스를 따릅니다. MySQL이 오라클에 흡수되면서 불확실한 라이센스 상태에 반발하면서 만들어졌으며, 배포자는 몬티 프로그램 AB(Monty Program AB) 와 저작권을 공유해야 하는데 이는 MySQL과 호환성을 높히기 위함입니다.

 

마리아 DB의 주요 개발자는 MySQL과 몬티 프로그램 AB 를 설립한 몬티 와이드니어스(Michael Monty Widenius) 입니다. MariaDB는 그의 둘째 딸인 마리아의 이름을 딴 것입니다.

 

MariaDB의 버전은 5.5까지는 MySQL의 버전 번호를 따랐습니다. 그리하여 MariaDB 5.5를 쓰고 있다면, MySQL 5.5의 모든 특징을 가지고 있음을 알게 됩니다. 5.5 이후에는 개발판을 10.x로 수를 붙이고 있습니다. MariaDB는 MySQL과 소스코드를 같이 하므로 명령어 및 사용 방법과 구조가 MySQL과 동일합니다. 이름만 다를 뿐 명령어나 사용 방법 (5.5까지) 모두 MySQL과 동일합니다. 

 

MariaDB 커뮤니티는 MySQL과 비교해 애플리케이션 부분 속도가 약 4~5천배 정도 빠르며, MySQL이 가지고 있는 모든 제품의 기능을 완벽히 구현하면서도 성능 면에서는 최고 70%의 향상을 보이고 있다고 주장합니다. 누가 더 빠르다라는 이야기를 쉽게 할 수 있는 사람은 거의 없을 것입니다. 누가 테스트를 했는지 어떤 시나리오로 벤치마크를 했는지에 따라서 결과가 서로 달라집니다.  

위키백과」참조

 

DBMS를 선택할 때 가장 크게 고려해야 할 부분은 DBMS 성능, 안정성, DBMS 기능과 유틸리티, 기술 지원 등 입니다. 안정성 문제에 있어서 MySQL 서버의 대응은 조금 문제가 있어 보입니다. MySQL 엔터프라이즈 버전과 MariaDB의 기능을 비교하자면 MariaDB가 무료로 기능을 사용 할 수 있는 부분이 많습니다.

 

스레드 풀, 백업 기능, 메모리 사용량 체크등 소소해 보이지만 꼭 필요한 기능은 MariaDB에서 더 많이 제공 하고 있습니다. 기술 지원에 있어서도 MariaDB가 오라클에 비해 대응이 미흡하지 않습니다.

 

ⓐ MariaDB는 기본 내부 임시 테이블용 스토리지 엔진은 Aria를 사용하며, 이는 MySQL 기본엔진 MyISAM에 비해서 빠른 처리를 보장합니다.
ⓑ MariaDB는 기본 트랜젝션 지원 스토리지 엔진으로 XtraDB를 사용하며 물론 InnoDB도 사용할 수 있습니다.
ⓒ MariaDB는 스레드 풀을 지원하는 반면, MySQL은 엔터프라이즈 버전에서만 지원합니다.
ⓓ MariaDB의 XtraDB에서는 SSD 기반의 디스크 I/O를 위한 블록 플러시 알고리즘을 지원합니다.
ⓔ MariaDB는 서브 쿼리와 조인 쿼리 최적화를 지원합니다.
ⓕ MariaDB는 멀티 스레드 리플리케이션을 지원합니다.
ⓖ MariaDB는 롤(ROLE) 기반의 권한 관리를 지원합니다.
ⓗ MariaDB는 가상 칼럼과 동적 칼럼을 지원합니다.

 

해당 내용은 아래 블로그를 참조하였습니다.

 

MariaDB와 MySQL 선택에 대해서 > SIR

요즘 DB 튜닝에 관심이 많아서 MariaDB와 MySQL 선택에 대해서 조사를 하는 중입니다.
이하 내용은 Real MariaDB (2014) - 위키북스 이성욱지음 - 에서 발췌한 부분을 요약했습니다.
회원분들의 DBMS

sir.kr

 

그럼 지금 부터 MySQL비해 성능 개선 및 기술 발전이 지속적으로 이루어지고 있는 MariaDB를 'Ubuntu 20.04'에 설치하는 과정을 설명합니다.  

 

패키지 설치 전 사전 필수 작업

 

Ubuntu 에서 리눅스 패키지를 배포하거나 설치하기 전에는 필수적으로 시스템 내에 설치된 패키지들을 업그레이드하여 최신 버전으로 유지해 주는 것이 좋습니다. 패키지 설치 전 필수 작업은 다음 글을 참고바랍니다.

 

 

[Ubuntu]Ubuntu 20.04 패키지 설치 전 사전 필수 작업

[Ubuntu]Ubuntu 20.04 패키지 설치 전 사전 필수 작업 [Ubuntu] Prerequisite tasks before installing Ubuntu 20.04 package Ubuntu 에서 리눅스 패키지를 배포하거나 설치하기 전에는 필수적으로..

tomcabin.tistory.com

 

 

MariaDB 설치

DBMS는 서버 모듈과 클라이언트 모듈로 구성됩니다. 설치하고자 하는 서버의 기능에 따라서 서버 모듈만 설치할 수 있고 클라이언트 모듈만 설치할 수도 있습니다. MariaDB도 서버와 클라이언트 모듈로 구성되어 있습니다. 클라이언트 모듈에는 서버 에 접속하기 위한 다양한 도구들이 포함되어 있습니다.

 

ⓐ 다음과 같이 명령을 실행하여 MariaDB 서버를 설치합니다.

 

1
root@uncletom-vm:~# sudo apt install mariadb-server

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
root@uncletom-vm:~# sudo apt install mariadb-server
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음의 추가 패키지가 설치될 것입니다 :
  galera-3 gawk libaio1 libcgi-fast-perl libcgi-pm-perl
  libconfig-inifiles-perl libdbd-mysql-perl libdbi-perl libfcgi-perl
  libhtml-template-perl libreadline5 libsigsegv2 libsnappy1v5
  libterm-readkey-perl mariadb-client-10.3 mariadb-client-core-10.3
  mariadb-common mariadb-server-10.3 mariadb-server-core-10.3 socat
제안하는 패키지:
  gawk-doc libclone-perl libmldbm-perl libnet-daemon-perl
  libsql-statement-perl libipc-sharedcache-perl mailx mariadb-test tinyca
다음 새 패키지를 설치할 것입니다:
  galera-3 gawk libaio1 libcgi-fast-perl libcgi-pm-perl
  libconfig-inifiles-perl libdbd-mysql-perl libdbi-perl libfcgi-perl
  libhtml-template-perl libreadline5 libsigsegv2 libsnappy1v5
  libterm-readkey-perl mariadb-client-10.3 mariadb-client-core-10.3
  mariadb-common mariadb-server mariadb-server-10.3 mariadb-server-core-10.3
  socat
0개 업그레이드, 21개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
20.2 M바이트 아카이브를 받아야 합니다.
이 작업 후 167 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] Y
......
mariadb-server (1:10.3.29-0ubuntu0.20.04.1) 설정하는 중입니다 ...
Processing triggers for systemd (245.4-4ubuntu3.7) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
root@uncletom-vm:~

 

ⓑ 다음과 같이 명령을 실행하여 MariaDB Client를 설치합니다. 설치는 간단하게 끝이 납니다.

 

1
root@uncletom-vm:~# sudo apt install mariadb-client

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
root@uncletom-vm:~# sudo apt install mariadb-client
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 새 패키지를 설치할 것입니다:
  mariadb-client
0개 업그레이드, 1개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
12.6 k바이트 아카이브를 받아야 합니다.
이 작업 후 68.6 k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://kr.archive.ubuntu.com/ubuntu focal-updates/universe amd64 mariadb-.....6 kB]
내려받기 12.6 k바이트, 소요시간 1초 (16.2 k바이트/초)
Selecting previously unselected package mariadb-client.
(데이터베이스 읽는중 ...현재 192604개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../mariadb-client_1%3a10.3.29-0ubuntu0.20.04.1_all.deb ...
Unpacking mariadb-client (1:10.3.29-0ubuntu0.20.04.1) ...
mariadb-client (1:10.3.29-0ubuntu0.20.04.1) 설정하는 중입니다 ...
root@uncletom-vm:~

 

ⓒ 다음은 MariaDB 관련 추가 패키지를 설치합니다.

 

1
root@uncletom-vm:~# sudo apt install mariadb-backup galera-3 libmariadb3 mariadb-common

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
root@uncletom-vm:~# sudo apt install mariadb-backup galera-3 libmariadb3 mariadb-common
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
패키지 galera-3는 이미 최신 버전입니다 (25.3.29-1).
galera-3 패키지는 수동설치로 지정합니다.
패키지 mariadb-common는 이미 최신 버전입니다 (1:10.3.29-0ubuntu0.20.04.1).
mariadb-common 패키지는 수동설치로 지정합니다.
다음 새 패키지를 설치할 것입니다:
  libmariadb3 mariadb-backup
0개 업그레이드, 2개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
5,420 k바이트 아카이브를 받아야 합니다.
이 작업 후 25.8 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] y
받기:1 http://kr.archive.ubuntu.com/ubuntu focal-updates/universe amd64 libmariadb3 
amd64 1:10.3.29-0ubuntu0.20.04.1 [154 kB]
받기:2 http://kr.archive.ubuntu.com/ubuntu focal-updates/universe amd64 mariadb-backup 
amd64 1:10.3.29-0ubuntu0.20.04.1 [5,266 kB]
내려받기 5,420 k바이트, 소요시간 20초 (269 k바이트/초)                         
Selecting previously unselected package libmariadb3:amd64.
(데이터베이스 읽는중 ...현재 192607개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../libmariadb3_1%3a10.3.29-0ubuntu0.20.04.1_amd64.deb ...
Unpacking libmariadb3:amd64 (1:10.3.29-0ubuntu0.20.04.1) ...
Selecting previously unselected package mariadb-backup.
Preparing to unpack .../mariadb-backup_1%3a10.3.29-0ubuntu0.20.04.1_amd64.deb ..
.
Unpacking mariadb-backup (1:10.3.29-0ubuntu0.20.04.1) ...
libmariadb3:amd64 (1:10.3.29-0ubuntu0.20.04.1) 설정하는 중입니다 ...
mariadb-backup (1:10.3.29-0ubuntu0.20.04.1) 설정하는 중입니다 ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
root@uncletom-vm:~

 

ⓓ 정상적으로 설치되었는지 다음 명령어로 확인해 봅니다.

 

MariaDB의 Version 정보를 확인합니다.

 

1
2
3
4
root@uncletom-vm:~# mariadb -V
mariadb  Ver 15.1 Distrib 10.3.29-MariaDB, for debian-linux-gnu (x86_64)                              
using readline 5.2
root@uncletom-vm:~

 

MariaDB 구동 상태를 확인합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
root@uncletom-vm:~# sudo systemctl status mysql
● mariadb.service - MariaDB 10.3.29 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor prese>
     Active: active (running) since Wed 2021-06-23 09:23:38 KST; 34min ago
       Docs: man:mysqld(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 17574 (mysqld)
     Status: "Taking your SQL requests now..."
      Tasks: 30 (limit: 4617)
     Memory: 66.0M
     CGroup: /system.slice/mariadb.service
             └─17574 /usr/sbin/mysqld
 
 6월 23 09:23:38 uncletom-vm /etc/mysql/debian-start[17612]: mysql
 6월 23 09:23:38 uncletom-vm /etc/mysql/debian-start[17612]: performance_schema
 6월 23 09:23:38 uncletom-vm /etc/mysql/debian-start[17612]: Phase 6/7: Checkin>
 6월 23 09:23:38 uncletom-vm /etc/mysql/debian-start[17612]: Processing databas>
 6월 23 09:23:38 uncletom-vm /etc/mysql/debian-start[17612]: information_schema
 6월 23 09:23:38 uncletom-vm /etc/mysql/debian-start[17612]: performance_schema
 6월 23 09:23:38 uncletom-vm /etc/mysql/debian-start[17612]: Phase 7/7: Running>
 6월 23 09:23:38 uncletom-vm /etc/mysql/debian-start[17612]: OK
 6월 23 09:23:38 uncletom-vm /etc/mysql/debian-start[17670]: Checking for insec>
 6월 23 09:23:38 uncletom-vm /etc/mysql/debian-start[17674]: Triggering myisam->
lines 1-22/22 (END)
......
 
cs

 

MariaDB의 보안설정

 

ⓐ MariaDB의 보안설정을 위해 다음 패키지를 설치합니다.

 

이 명령은 아직도 MySQL 로 시작합니다. 즉, MySQL 설정 시 보안설정과 거의 동일합니다.

 

1
root@uncletom-vm:~# sudo mysql_secure_installation

 

패키지를 실행하면 'root' 의 암호를 묻습니다. 처음 설정하는 상태이면 엔터 키를 눌러 다음 단계로 진행합니다. 

 

1
2
3
4
5
6
7
8
9
10
11
root@uncletom-vm:~# sudo mysql_secure_installation
 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we`ll need the current
password for the root user.  If you have just installed MariaDB, and
you haven`t set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none): 

 

경우에 따라서 'root' 계정 암호를 이미 설정해서 'root' 계정의 암호가 설정되어 있다고 메시지가 뜨면 'n'을 입력합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root@uncletom-vm:~# sudo mysql_secure_installation
 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we will need the current
password for the root user.  If you have just installed MariaDB, and
you haven`t set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none): 
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
 
You already have a root password set, so you can safely answer 'n'.
 
Change the root password? [Y/n] n 

 

반대로 'root' 암호가 설정되어 있지 않으면 'root' 암호 설정 여부를 묻습니다. 'y'를 입력하여 새 암호를 입력합니다.

 

1
2
3
4
5
6
7
8
9
10
11
Setting the root password ensures that nobody can log into the
MariaDB root user without the proper authorisation. 
 
Set root password? [Y/n] y 
New password: 
Re-enter new password: 
Password updated successfully! 
Reloading privilege tables.. 
... Success! set, so you can safely answer 'n'.
 
Change the root password? [Y/n] n 

 

익명계정(Anonymous users)을 묻습니다. 보안 상 당연히 'y'를 입력합니다.

 

1
2
3
4
5
6
7
8
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
 
Remove anonymous users? [Y/n] y
 ... Success!

 

테스트 DB를 사용할 것인지 묻습니다. 테스트를 위해 남겨두었습니다.

 

1
2
Remove test database and access to it? [Y/n] n                                                        
 ... skipping.

 

설정한 내용을 즉시 반영할지를 묻습니다. 'y'를 입력해서 즉시 반영합니다.

 

1
2
3
4
5
6
7
8
9
10
Reload privilege tables now? [Y/n] y
 ... Success!
 
Cleaning up...
 
All done!  If you`ve completed all of the above steps, your MariaDB                                  
installation should now be secure.
 
Thanks for using MariaDB!
root@uncletom-vm:~#

 

이제 MariaDB의 보안 설정이 완료 되었습니다.

 

ⓑ 접속 테스트를 진행해 보겠습니다. 다음 명령을 입력하여 MariaDB에 접속합니다. 'Enter password:' 부분에서 'root' 비밀번호를 입력합니다.

 

1
2
3
4
5
6
7
8
9
10
11
root@uncletom-vm:~# sudo mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 53
Server version: 10.3.29-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04
 
Copyright (c) 20002018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.                       
 
MariaDB [(none)]> 

 

'show databases;' 명령을 실행해서 Database 목록을 확인해 봅니다.

 

1
2
3
4
5
6
7
8
9
10
11
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)
 
MariaDB [(none)]>      

 

MariaDB 버전을 확인해 보겠습니다.

 

1
2
3
4
5
6
7
8
9
MariaDB [(none)]> select version();
+----------------------------------+
| version()                        |
+----------------------------------+
| 10.3.29-MariaDB-0ubuntu0.20.04.1 |
+----------------------------------+
1 row in set (0.000 sec)
 
MariaDB [(none)]>

 

'quit'를 입력하여 다시 터미널 Command 모드로 복귀합니다.

 

1
2
3
MariaDB [(none)]> quit
Bye
root@uncletom-vm:~#

 

지금까지 Ubuntu 20.04에 MariaDB 설치하는 방법을 설명드렸습니다.
감사합니다.