๐ MariaDB๋?
MariaDB๋ ์คํ ์์ค ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (RDBMS)์ ๋๋ค.
MySQL์์ ํ์๋์์ผ๋ฉฐ, ๋์ ์ฑ๋ฅ๊ณผ ๋ณด์์ฑ์ ์ ๊ณตํ๋ ๊ฒ์ด ํน์ง์ ๋๋ค.
โ MariaDB์ ํน์ง
- ์คํ ์์ค: ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ , ๋ค์ํ ์ปค๋ฎค๋ํฐ ์ง์์ ๋ฐ์
- MySQL๊ณผ ํธํ: ๊ธฐ์กด MySQL์์ ์ฝ๊ฒ ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ๋ฅ
- ์ฑ๋ฅ ์ต์ ํ: InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ๊ธฐ๋ฐ์ผ๋ก ํฅ์๋ ์ฑ๋ฅ ์ ๊ณต
- ํ์ฅ์ฑ: ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด์์๋ ์ ํฉ
- ๋ณด์ ๊ฐํ: ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ์ํธํ ๊ธฐ๋ฅ ์ ๊ณต
1-2. MySQL๊ณผ MariaDB์ ์ฐจ์ด์
MariaDB๋ MySQL์์ ํฌํฌ(Fork)๋ ํ๋ก์ ํธ๋ก, MySQL๊ณผ ์ ์ฌํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์ฐจ์ด์ ์ด ์์ต๋๋ค.
โ ์ฐจ์ด์ :
- MySQL์ ์ค๋ผํด์ด ์์ ํ๊ณ ์์ง๋ง, MySQL Community Edition์ ์ฌ์ ํ ์คํ ์์ค(GPLv2)์ ๋๋ค.
- MySQL์ ์ต์ ๋ฒ์ (8.0 ์ด์)์ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ์์ง์ด InnoDB์ด๋ฉฐ, ์ฑ๋ฅ๋ ํฅ์๋์์ต๋๋ค.
- MariaDB๋ MySQL๊ณผ ํธํ๋์ง๋ง, ์ต์ MySQL 8.0๊ณผ๋ ์ผ๋ถ SQL ๋ฌธ๋ฒ ๋ฐ ๊ธฐ๋ฅ ์ฐจ์ด๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
โ ๋น๊ตํ
๋น๊ต ํญ๋ชฉ | MySQL (8.0 ๊ธฐ์ค) | MariaDB |
---|---|---|
๋ผ์ด์ ์ค | ์คํ ์์ค (MySQL Community) / ์์ฉ (Enterprise) | ์คํ ์์ค (GPLv2) |
๊ฐ๋ฐ ์ฃผ์ฒด | ์ค๋ผํด(Oracle) | MariaDB ์ฌ๋จ (Community ์ค์ฌ) |
JSON ์ง์ | โ ๊ธฐ๋ณธ ์ง์ (JSON ํ์ ) | โ ์ง์ํ์ง๋ง ์ฑ๋ฅ ์ฐจ์ด ์์ |
์คํ ๋ฆฌ์ง ์์ง | InnoDB, MyISAM ๋ฑ | InnoDB, Aria, TokuDB, XtraDB ๋ฑ ์ถ๊ฐ |
์ฟผ๋ฆฌ ์ต์ ํ | ๋น์ฉ ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ | ๋น์ฉ ๊ธฐ๋ฐ + ํํธ ์ฌ์ฉ ๊ฐ๋ฅ |
๋ณต์ ๊ธฐ๋ฅ | ์ผ๋ฐ ๋ณต์ , Group Replication | Galera Cluster ์ง์ |
โ MariaDB๊ฐ ์ ํธ๋๋ ์ด์
- MySQL์ ํ์์ฑ์ ์ฐ๋ คํ๋ ์ฌ์ฉ์๋ค์๊ฒ ๋์ ์ ๊ณต
- ์ค๋ผํด์ ์์ ์ ์ ์ฑ ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ์์ ๋กญ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ
- ๋น ๋ฅธ ์ ๋ฐ์ดํธ ๋ฐ ํจ์น๋ก ๋ณด์๊ณผ ๊ธฐ๋ฅ์ด ์ง์์ ์ผ๋ก ๊ฐ์
๐ InnoDB ์์ง์ด๋?
InnoDB๋ MySQL๊ณผ MariaDB์์ ๊ธฐ๋ณธ ์ ์ฅ ์์ง(Storage Engine)์ผ๋ก ์ฌ์ฉ๋๋ ํธ๋์ญ์ ์ง์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ ๋๋ค.
โ ์ฃผ์์
- InnoDB๋ MySQL๊ณผ MariaDB์ ๊ธฐ๋ณธ ์์ง์ด์ง๋ง, MariaDB๋ 10.1๋ฒ์ ๋ถํฐ๋ InnoDB ๋์ ์์ฒด ๊ฐ์ ๋ XtraDB๋ฅผ ๊ธฐ๋ณธ ์์ง์ผ๋ก ์ฌ์ฉ
- ์ต์ ๋ฒ์ ์์๋ ๋ค์ InnoDB๊ฐ ๊ธฐ๋ณธ ์์ง์ผ๋ก ์ค์ ๋จ (MariaDB 10.5+)
1-3. MariaDB์ ๊ธฐ๋ณธ ์ํคํ ์ฒ
MariaDB๋ ์ฌ๋ฌ ๊ฐ์ ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์ฃผ์ ์ํคํ ์ฒ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1) ์คํ ๋ฆฌ์ง ์์ง(Storage Engine)
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ ๋ฐ๋ผ ๋ค์ํ ์คํ ๋ฆฌ์ง ์์ง์ด ์์ต๋๋ค.
- InnoDB: ํธ๋์ญ์ ์ ์ง์ํ๋ ๊ธฐ๋ณธ ์์ง (ACID ๋ณด์ฅ)
- Aria: ๊ณ ์ฑ๋ฅ ์์ ํ ์ด๋ธ ์ ์ฅ์ฉ ์์ง
- TokuDB: ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ํฉํ ์์ง
- MyISAM: ๋น ๋ฅธ ์ฝ๊ธฐ ์ฑ๋ฅ์ ์ ๊ณตํ์ง๋ง ํธ๋์ญ์ ๋ฏธ์ง์
MariaDB๋ ๋ค์ํ ์คํ ๋ฆฌ์ง ์์ง์ ์ง์ํ๋ฉฐ, ์ฃผ์ ์์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- InnoDB/XtraDB: ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ์์ง, ํธ๋์ญ์ ์ง์
- Aria: MyISAM ๋์ฒด ์์ง, ํฌ๋์ ๋ณต๊ตฌ ๊ฐ๋ฅ
- TokuDB: ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ต์ ํ (10์ต ๊ฐ ์ด์์ ๋ ์ฝ๋ ์ ์ฅ ๊ฐ๋ฅ) (๋น ๋ฐ์ดํฐ์ฉ)
- Memory: ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ์ฌ ๋น ๋ฅธ ์กฐํ ๊ฐ๋ฅ ํธ๋์ญ์ ๋ฏธ์ง์(ํ๋ฐ์ฑ)
๐ ์คํ ๋ฆฌ์ง ์์ง(Storage Engine)๋?
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS)์์ **๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ๊ด๋ฆฌ, ๊ฒ์ํ๋ ํต์ฌ ์ปดํฌ๋ํธ์ ๋๋ค. DBMS๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ์ผ ์์คํ ์ ์ ์ฅํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๋ฐฉ์์ ๊ฒฐ์ ํ๋ ์ํํธ์จ์ด ๊ณ์ธต์ ๋๋ค.
- DBMS(Database Management System, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ )๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑ, ๊ด๋ฆฌ, ์กฐ์ํ๋ ์ํํธ์จ์ด.
2) SQL ํ์(SQL Parser)
MariaDB๋ SQL ํ์๋ฅผ ํตํด ์ฌ์ฉ์์ SQL ๋ฌธ์ ๋ถ์ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ดํดํ ์ ์๋๋ก ๋ณํํด ์คํ ๊ณํ์ ์๋ฆฝํฉ๋๋ค.
3) ์ฟผ๋ฆฌ ์คํ๊ธฐ(Query Executor)
์ฟผ๋ฆฌ ์คํ๊ธฐ(Query Executor)๋ SQL ๋ฌธ์ ์คํํ๊ณ , ์คํ ๋ฆฌ์ง ์์ง์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์์ ํฉ๋๋ค.
4) ์บ์ ๋ฐ ๋ฒํผ ๊ด๋ฆฌ
MariaDB๋ ์ฑ๋ฅ ํฅ์์ ์ํด ๋ฐ์ดํฐ ์บ์, ์ธ๋ฑ์ค ์บ์ ๋ฑ์ ์ฌ์ฉํจ
- Query Cache: ๋์ผํ ์ฟผ๋ฆฌ๋ฅผ ๋น ๋ฅด๊ฒ ์คํํ๊ธฐ ์ํด ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅ
- Buffer Pool: ๋์คํฌ I/O๋ฅผ ์ค์ด๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
5๏ธโฃ MariaDB ์ค์น ๋ฐฉ๋ฒ
โ ์ค์น ๋ฐฉ๋ฒ
๐ Windows์์ ์ค์น
- MariaDB ๊ณต์ ํํ์ด์ง์์ Windows์ฉ ์ค์น ํ์ผ ๋ค์ด๋ก๋
mariadb.exe
์คํ ํ ์ค์น ๋ง๋ฒ์ฌ ์งํ- MySQL๊ณผ ํธํ๋๋ฏ๋ก ๊ธฐ์กด MySQL ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์๋ ์์
๐ Ubuntu / Debian์์ ์ค์น
sudo apt update
sudo apt install mariadb-server
sudo systemctl start mariadb
sudo systemctl enable mariadb
๐ CentOS์์ ์ค์น
sudo yum install mariadb-server
sudo systemctl start mariadb
sudo systemctl enable mariadb
โ MariaDB ๋ณด์ ์ค์ (์ค์น ํ ์คํ)
sudo mysql_secure_installation
- root ๊ณ์ ๋น๋ฐ๋ฒํธ ์ค์
- ์ต๋ช ์ฌ์ฉ์ ์ญ์
- ์๊ฒฉ root ๋ก๊ทธ์ธ ์ฐจ๋จ
- ํ ์คํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ญ์
โ MariaDB ์ ์ ๋ฐ ๊ธฐ๋ณธ ๋ช ๋ น์ด
mysql -u root -p # MariaDB ์ ์
SHOW DATABASES; # ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชฉ๋ก ๋ณด๊ธฐ
โ
MariaDB์ ๊ธฐ๋ณธ ์ค์ ํ์ผ
MariaDB์ ์ค์ ์ /etc/mysql/mariadb.conf.d/50-server.cnf
์์ ๊ด๋ฆฌ๋ฉ๋๋ค.
์ฌ๊ธฐ์์ ํฌํธ, ์บ์ ํฌ๊ธฐ, ์ต๋ ์ฐ๊ฒฐ ์ ๋ฑ์ ์กฐ์ ํ ์ ์์ต๋๋ค.
1-5. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ ๋ฐ ์ค์
MariaDB์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Database)๋ฅผ ์์ฑํ๊ณ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ์๋ค.
โ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
CREATE DATABASE my_database
โ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชฉ๋ก ํ์ธ
SHOW DATABASES;
โ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ
USE my_database;
โ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ญ์
DROP DATABASE my_database;
โ ๊ธฐ๋ณธ ์ค์ ๋ณ๊ฒฝ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌธ์ ์ธ์ฝ๋ฉ๊ณผ ์ ๋ ฌ ๋ฐฉ์์ ์ค์ ํ ์๋ ์์ต๋๋ค.
CREATE DATABASE my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
utf8mb4
: ํ๊ธ, ์ด๋ชจ์ง ๋ฑ์ ํฌํจํ๋ ์์ ํ UTF-8 ์ธ์ฝ๋ฉutf8mb4_unicode_ci
: ๋์๋ฌธ์ ๊ตฌ๋ณ ์์ด ์ ๋ ฌ- โ ์ฃผ์์
utf8mb4
๊ฐ ๊ธฐ๋ณธ ์ธ์ฝ๋ฉ์ด ์๋๋ฏ๋ก ๋ช ํํ๊ฒ ์ค์ ํด์ผ ํจ
1-6. MariaDB์ ์ค๋ฌด ํ์ฉ ์์
MariaDB๋ ๋ค์ํ ์ฐ์ ๋ถ์ผ์์ ํ์ฉ๋ฉ๋๋ค.
โ ์ค์ ์ฌ์ฉ ์ฌ๋ก
- ์น ์ ํ๋ฆฌ์ผ์ด์ : WordPress, Drupal, Joomla ๋ฑ CMS์์ MariaDB ์ฌ์ฉ
- ๋ฐ์ดํฐ ๋ถ์: ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์กฐํํ๊ณ ๋ถ์ ๊ฐ๋ฅ
- IoT ๋ฐ์ดํฐ ์ ์ฅ์: ์ค์๊ฐ ์ผ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ
- ์ ์์๊ฑฐ๋: ์ฃผ๋ฌธ, ๊ณ ๊ฐ, ์ ํ ๋ฐ์ดํฐ ๊ด๋ฆฌ
- ๊ธ์ต ์๋น์ค: ๋ณด์์ด ์ค์ํ ํธ๋์ญ์ ์ฒ๋ฆฌ
โ MariaDB๋ฅผ ์ฌ์ฉํ ๋ ๊ณ ๋ คํ ์
- ๋ฐ์ดํฐ๋์ด ๋ง๋ค๋ฉด ์ธ๋ฑ์ค ์ต์ ํ ํ์
- ๋ณด์ ์ค์ ์ ์ฒ ์ ํ ํด์ผ ํจ (ํนํ ์๊ฒฉ ์ ๊ทผ ์ ํ)
- ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ ์ ๋ต ๋ง๋ จ ํ์