## mariadb 에 대한 설명은 위키를 참고
https://ko.wikipedia.org/wiki/MariaDB
## 10.3.x 변경 및 개선사항
mariadb.com/kb/en/changes-improvements-in-mariadb-103/
## mariadb 10.3.27 장점
- innodb 스토리지 엔진을 이용한 트랜잭션 어플리케이션 개발 가능(당연한 얘기..)
- 파티셔닝 테이블 기능을 이용하여 대용량 데이터를 관리할 수 있다. (일파티션으로 설정된 테이블이 1TB가 넘는 경우도 무리없이 사용가능)
- JSON Column DataType 및 function 을 지원
- SEQUENCE 사용가능(auto_increment 가 있긴 하지만 있으면 좋을듯...)
- 다양한 sql tool 을 사용할 수 있다.(heidiSQL, sqlyog 등등등...)
- 경험 : 웹어플리케이션을 개발하고 운영할때 mariadb 를 적용하였는데 문제없이 사용가능이 가능하였다.(일일 최소 5백만건 Row 생성)
## rpm이 아닌 바이너리방식(tar.gz 파일)로 설치하는 이유
- rpm 보다 설치하는 방법이 어렵지만 엔진/데이터/설정파일경로를 지정할 수 있다.
- mariadb 구성정보를 파악할 수 있다.
- 삭제가 쉽다.
## mariadb 설치하기
0. OS설정
# 호스트명 develop로 변경
hostnamectl set-hostname develop
서버환경에 맞는 호스트명을 지정하면된다.
# 방화벽 해제
# systemctl stop firewalld
# systemctl disable firewalld
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
/etc/selinux/config 파일의 SELINUX 속성을 변경하면 재부팅하여도 방화벽해제가 영구적용된다.
사이트 환경에 맞는 방화벽 설정을 적용하여야 보안에 안전한 DB 환경을 구성할 수가 있다.
# 프로세스 개수제한 및 파일오픈 개수제한 조정
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
:wq
리눅스 OS는 자원관리를 위해 프로세스 제한개수, 파일오픈 제한개수를 설정하고 있어 운영환경에서는 기본수치값 보다 높은 수치값을 적용해야 추후 장애요소를 줄일 수 있다.
# OS 재기동
reboot
재기동을 하여 설정을 영구 적용하도록 하자.
1. 사전준비
mysql user 생성 및 data 및 로그를 저장할 폴더/파일를 생성한다.
[root@develop ~]# useradd mysql
[root@develop ~]# id mysql
uid=1001(mysql) gid=1001(mysql) groups=1001(mysql)
[root@develop ~]#
[root@develop ~]# mkdir /home/mysql/log
[root@develop ~]# chown -R mysql.mysql /home/mysql/log
[root@develop ~]#
[root@develop ~]# mkdir -p /data/mariadb/master
[root@develop ~]# mkdir -p /data/mariadb/ibdata
[root@develop ~]# mkdir -p /data/mariadb/iblog
[root@develop ~]# mkdir -p /data/mariadb/log-bin
[root@develop ~]# chown -R mysql.mysql /data/mariadb
[root@develop ~]#
[root@develop /]# ls -al /data/mariadb/
total 0
drwxr-xr-x. 6 mysql mysql 62 Dec 15 20:40 .
drwxr-xr-x. 3 root root 21 Dec 15 20:39 ..
drwxr-xr-x. 2 mysql mysql 6 Dec 15 20:39 ibdata
drwxr-xr-x. 2 mysql mysql 6 Dec 15 20:40 iblog
drwxr-xr-x. 2 mysql mysql 6 Dec 15 20:39 log-bin
drwxr-xr-x. 2 mysql mysql 6 Dec 15 20:39 master
[root@develop local]#
[root@develop local]# touch /var/log/mysqld.log
[root@develop local]# chmod 644 /var/log/mysqld.log
[root@develop local]# chown mysql:mysql /var/log/mysqld.log
[root@develop local]#
[root@develop local]# ls -al /var/log/mysqld.log
-rw-r--r--. 1 mysql mysql 0 Dec 15 20:56 /var/log/mysqld.log
[root@develop local]#
2. 설치파일을 다운로드 받는다.
mariadb.com/downloads/ 접속하여 'Show All Files' 를 클릭한다.
mariadb-10.3.27 > bintar-linux-x86_64 > mariadb-10.3.27-linux-x86_64.tar.gz 클릭하여 다운로드한다.
3. 설치할 CentOS 에 mariadb 설치파일을 /root 폴더에 업로드한다.
[root@develop ~]# ll
total 949188
-rw-------. 1 root root 1670 Dec 13 10:31 anaconda-ks.cfg
-rw-r--r--. 1 root root 1684 Dec 13 01:34 initial-setup-ks.cfg
-rw-r--r--. 1 root root 971958128 Dec 15 20:25 mariadb-10.3.27-linux-x86_64.tar.gz
[root@develop ~]#
4. tar zxvf 명령어를 이용하여 파일을 압축해제 한다.
[root@develop ~]# tar zxvf mariadb-10.3.27-linux-x86_64.tar.gz
mariadb-10.3.27-linux-x86_64/
mariadb-10.3.27-linux-x86_64/support-files/
mariadb-10.3.27-linux-x86_64/support-files/mysql.server
mariadb-10.3.27-linux-x86_64/support-files/policy/
.
.
.
mariadb-10.3.27-linux-x86_64/CREDITS
mariadb-10.3.27-linux-x86_64/README.md
[root@develop ~]#
5. 폴더를 /usr/local/ 로 이동한 뒤 심볼릭링크를 생성한다.
[root@develop ~]# mv mariadb-10.3.27-linux-x86_64 /usr/local/
[root@develop ~]# cd /usr/local/
[root@develop local]# ln -s mariadb-10.3.27-linux-x86_64/ mysql
6. 설정파일 복사 및 변경
[root@develop local]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@develop local]# vi /etc/init.d/mysqld
# basedir, datadir 경로 변경
basedir=/usr/local/mysql
datadir=/data/mariadb/master
:wq
[root@develop local]#
[root@develop local]# vi ~/.bash_profile
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/scripts
:wq
[root@develop local]# source ~/.bash_profile
[root@develop local]#
[root@develop local]# cd /etc
[root@develop etc]# mv my.cnf my.cnf.bak
[root@develop etc]# vi my.cnf
# Mariadb
[server]
# mysqld standalone daemon
[mysqld]
port = 3306
datadir = /data/mariadb/master
socket = /tmp/mysql.sock
# Character set (utf8mb4)
character_set-client-handshake = FALSE
character-set-server = utf8mb4
collation_server = utf8mb4_general_ci
init_connect = set collation_connection=utf8mb4_general_ci
init_connect = set names utf8mb4
# Common
table_open_cache = 2048
max_allowed_packet = 32M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 64M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
ft_min_word_len = 4
lower_case_table_names = 1
default-storage-engine = innodb
thread_stack = 240K
transaction_isolation = READ-COMMITTED
tmp_table_size = 32M
# Connection
max_connections = 200
max_connect_errors = 50
back_log = 100
thread_cache_size = 100
# Query Cache
query_cache_size = 32M
query_cache_limit = 2M
log-bin = /data/mariadb/log-bin/mysql-bin
binlog_format = mixed
max_binlog_size = 128M
expire_logs_days = 7
slow_query_log = 1
long_query_time = 5
log_output = FILE,TABLE
log_error = /var/log/mysqld.log
slow_query_log_file = /home/mysql/log/mysql_slow_query.log
general_log_file = /home/mysql/log/mysql_general.log
key_buffer_size = 32M
bulk_insert_buffer_size = 32M
myisam_sort_buffer_size = 64M
myisam_max_sort_file_size = 256M
myisam_repair_threads = 1
# Innodb
innodb_buffer_pool_size = 1G # 현재 서버 사양의 70~80%를 설정한다.
innodb_file_per_table = 1
innodb_data_home_dir = /data/mariadb/ibdata
innodb_data_file_path = ibdata1:1000M;ibdata2:1000M;ibdata3:1000M;ibdata4:1000M:autoextend:max:2000M
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 1
innodb_log_group_home_dir = /data/mariadb/iblog
innodb_log_buffer_size = 32M
innodb_log_file_size = 128M
innodb_log_files_in_group = 10
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
:wq
[root@develop etc]#
my.cnf 설정은 jojoldu.tistory.com 블로그를 참고하였다. (아주 좋은 블로그)
7. DB install 및 mariadb 서비스 기동
[root@develop etc]# mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mariadb/master --defaults-file=/etc/my.cnf
Installing MariaDB/MySQL system tables in '/data/mariadb/master' ...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
.
. 생략
.
The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB strong and vibrant community:
https://mariadb.org/get-involved/
[root@develop etc]#
[root@develop etc]#
[root@develop etc]# service mysqld start
Reloading systemd: [ OK ]
Starting mysqld (via systemctl): [ OK ]
[root@develop etc]#
[root@develop etc]# systemctl status mysqld
● mysqld.service - LSB: start and stop MariaDB
Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)
Active: active (running) since Tue 2020-12-15 21:31:57 KST; 2min 14s ago
Docs: man:systemd-sysv-generator(8)
Process: 7532 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
Tasks: 45
CGroup: /system.slice/mysqld.service
├─7722 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mariadb/master --pid-file=/data/mariadb/master/develop.pid
└─7982 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mariadb/master --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log...
Dec 15 21:31:55 develop systemd[1]: Starting LSB: start and stop MariaDB...
Dec 15 21:31:56 develop mysqld[7532]: Starting MariaDB.201215 21:31:56 mysqld_safe Logging to '/var/log/mysqld.log'.
Dec 15 21:31:56 develop mysqld[7532]: 201215 21:31:56 mysqld_safe Starting mysqld daemon with databases from /data/mariadb/master
Dec 15 21:31:57 develop mysqld[7532]: SUCCESS!
Dec 15 21:31:57 develop systemd[1]: Started LSB: start and stop MariaDB.
[root@develop etc]#
!!! service mysqld start 를 꼭 해주어야 systemctl 명령어가 문제없이 실행된다. !!!
8. 접속하여 mariadb 버전확인
[root@develop etc]# mysql -D mysql -e 'select version();'
+---------------------+
| version() |
+---------------------+
| 10.3.27-MariaDB-log |
+---------------------+
[root@develop etc]#
버전이 정상적으로 출력이 되면 mariadb 는 정상적으로 설치가 완료되었다.
이제 강력한 RDBMS 인 mariadb 를 사용할 수 있게 되었다!!!
'Database > Mariadb' 카테고리의 다른 글
[Mariadb] 새로운 INSERT 방법(INSERT INTO SET) (0) | 2022.01.10 |
---|---|
윈도우에서 Mariadb 10.6.3 64bit 버전 설치하는 방법 (0) | 2021.08.04 |
MariaDB Xpand 소개 (2) | 2021.03.15 |
[mariadb] flush 명령어 정리 (0) | 2021.02.04 |
[Mariadb] db 및 user 생성 방법 (0) | 2021.01.06 |