운영 : 이중화 고려하여 /data 파티션안에 생성
[root@mbv-selfdb2 data]# pwd
/data
[root@mbv-selfdb2 data]# ll
total 4
drwxr-xr-x 5 maria dba 4096 Sep 17 09:38 MARIA_DATA
drwxr-xr-x 2 maria dba 25 Aug 13 11:12 MARIA_LOG
개발 : /box 파티션 안에 생성
[asmanager@mbv-devselfDB box]$ pwd
/box
[asmanager@mbv-devselfDB box]$ ll
total 4
drwxr-xr-x 4 maria dba 34 Dec 9 03:01 backup
drwxr-xr-x. 2 root root 6 Jun 11 15:06 DBA
drwxr-xr-x. 5 maria dba 4096 Sep 16 16:17 MARIA_DATA
drwxr-xr-x. 2 maria dba 25 Sep 16 09:57 MARIA_LOG
[root@adb1 ~]# groupadd dba
[root@adb1 ~]# useradd -g dba maria
[root@adb1 ~]# cat /etc/group |grep dba
dba:x:500:
[root@adb1 ~]# cat /etc/passwd |grep maria
maria:x:500:500::/MARIA/:/bin/bash
[maria@jv0574 ~]$ vi ~/.bashrc
* 해당구문 추가
export PATH=$PATH:/MARIA/mariadb/bin
* 수정내용 적용
source ~/.bashrc
## 디렉토리 생성
#mkdir -p /MARIA/mariadb
#mkdir -p /box/MARIA_LOG/{general,relay,error,slow,binarylog}
#mkdir -p /box/{MARIA_DATA,MARIA_TEMP}
## 권한 설정
root@jv0574 [/box/MARIA_LOG]chown -R maria:dba /MARIA/ /box/MARIA_DATA/ /box/MARIA_LOG/ /box/MARIA_TEMP/
https://mariadb.com/kb/en/postdownload/mariadb-server-10-2-14/
https://downloads.mariadb.org/mariadb
## 압축풀기
root@jv0574 [/home/joinsiam]tar zxvf mariadb-10.2.14-linux-systemd-x86_64.tar.gz
## 경로 설정
root@jv0574 [/home/joinsiam]mv mariadb-10.2.14-linux-systemd-x86_64 /MARIA/mariadb_10.2.14
## 링크 생성
root@jv0574 [/MARIA]ln -s /MARIA/mariadb_10.2.14/ /MARIA/mariadb
MariaDB의 엔진 파라메터 설정은, default 값으로도 적정한 성능/안정성 수준을 가질 수 있으므로, 서버 물리 메모리 크기에 직접적으로 관계된 buffer pool size (일반적으로 물리메모리의 50% 설정)만 조정한 후 아래 권고 값들을 그대로 사용을 권장한다.
설정파일은 MariaDB 구성에 있어서 가장 중요한 부분이다. 설정 파일의 각 항목에 대한 자세한 내용 참고
설정 참고
https://mariadb.com/kb/en/server-system-variables/#interactive_timeout
my.cnf
[client]
socket=/tmp/mysql.sock
[mysqld]
user=maria
sql-mode=STRICT_ALL_TABLES,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION # ANSI_QUOTES 의 경우 신규 프로젝트 생성시만 적용
lower_case_table_names=1 #데이터베이스 또는 테이블의 대소문자구분하지 않음으로 설정
basedir=/MARIA/mariadb
port=3306
socket=/tmp/mysql.sock
datadir=/box/MARIA_DATA
tmpdir=/box/MARIA_TEMP
#secure_file_priv=/tmp # LOAD_FILE()함수 설정
# Character set Config
character-set-client-handshake=FALSE # skip-character-set-client-handshake
character-set-server=utf8mb4
init_connect=SET collation_connection = utf8mb4_general_ci
init_connect=SET NAMES utf8mb4
# Common Config
interactive_timeout=1800 # 콘솔/터미널 timeout 시간, Default Value: 28800
#max_allowed_packet=128M
max_connections=1000 # 최대 커넥션 수 WAS의 커넥션풀보다 크게 설정
skip-name-resolve=1
# binlog_cache_size=1M # 한 트랜잭션 동안 binary log 에 쓸 변경분 캐쉬 크기
# max_heap_table_size=2048M # MEMORY 스토리지 엔진 변수
# skip-external-locking #for MyISAM , Aria
# max_length_for_sort_data=1024 # default 1024
# tmp_table_size=2048M # default 16M
table_open_cache=10240 # Maximum number of open tables cached in one table cache instance default 2000
table_open_cache_instances=16 # default 8
transaction-isolation= READ-COMMITTED
open_files_limit = 21515
performance_schema=1 # 관련부분 추가 설정 필요
# Buffer_size Config
# 유지보수 업체 setting값
# read_buffer_size=2M # for MyISAM, Aria and MERGE tables
# join_buffer_size=2M # Default Value: 262144 (256kB) 최소 크기이므로 낮게 설정해도 됨
# read_rnd_buffer_size=8M # for MyISAM
# sort_buffer_size=1M # default 2M
# Query Cache Disable
# MySQL 8.0 에서는 사라진 기능
query_cache_type=0
query_cache_size=0
# Log Config
log-bin=/box/MARIA_LOG/binary/mysql-bin
relay-log=/box/MARIA_LOG/relay/relay-log # 슬레이브의 I/O 쓰레드가 마스터로부터 갱신로그(갱신관련 쿼리를 기록한 데이터)를 수신해서 슬레이브 측에 저장한 것
expire_logs_days=7 # binary log 저장기한
max_binlog_size=1G
sync_binlog=1 #bin log가 쓰일때마다 disk flush
binlog_format=mixed
log-error=/box/MARIA_LOG/error/mysql.err
slow_query_log_file=/box/MARIA_LOG/slow/mysql-slow-query.log
#slow_query_log=1 #slow쿼리 로그 활성화
#long_query_time=10 # 해당 초 이상의 슬로우 쿼리 기록
#general_log=1
#general_log_file=/box/MARIA_LOG/general/mysql_general.log
# Innodb config
innodb_data_home_dir=/box/MARIA_DATA
# innodb_log_group_home_dir=/box/MARIA_DATA
innodb_buffer_pool_size = 3G #전체 메모리의 50~80%
innodb_data_file_path=ibdata1:1024M;ibdata2:1024M;ibdata3:1024M:autoextend
innodb_file_per_table=1
innodb_flush_method= O_DIRECT
# innodb_lock_wait_timeout=50 # lock 대기하는 시간, default 50
# innodb_log_buffer_size=128M # redo log 버퍼 크기 , default 16M
# innodb_log_file_size= 512M # redo log 파일 크기, default 96M
# innodb_log_files_in_group=8
# innodb_thread_sleep_delay=0
# innodb_fast_shutdown
# innodb_autoinc_lock_mode=1
#innodb_thread_concurrency = 0 # 10.6 버전부터 삭제됨 동시 쓰레드 수 , default 0
innodb_read_io_threads = 4 # default 4
innodb_write_io_threads = 4 # default 4
# innodb_open_files = 8192 # 최대 열어놓을수 있는 .ibd파일 수
# MyISAM Config
# bulk_insert_buffer_size = 64M
# key_buffer_size =128M
# myisam_max_sort_file_size =10G
# myisam_recover_options
# myisam_repair_threads= 1
# myisam_sort_buffer_size =64M
# Replication related settings
# log_bin_trust_function_creators = 1 # replication환경에서는 이 설정을 해야만 routine 생성 가능
#server-id =1
[mysqldump]
# quick # buffer쓰지 않고 direct로dump받기
# max_allowed_packet=512M
* socket :
>mysql 서버프로세스(mysql)과 클라이언트 프로세스가 통신하기 위해 사용됨
기동중에만 생성되고 종료시 삭제
mysqld와 클라이언트 모두 사용가능한 위치에 있어야함
* performance_schema :
성능 지표 수집 관련 설정
> 참고
https://myinfrabox.tistory.com/194
* skip-name-resolve=1
>MySQL 서버는 외부로 부터 접속 요청을 받을 경우 인증을 위해 IP 주소를 호스트네임으로 바꾸는 과정을 수행하여 접속시에 불필요한 부하가 발생하게 됩니다. skip-name-resolve를 설정하시고 접속시에 IP 기반으로 접속을 하게 되면 hostname lookup 과정을 생략하게 되어 좀 더 빠르게 접속을 하실 수 있습니다.
# pid-file=/MARIA_DATA/mysql.pid -> 미 설정시 DATA_DIR/HOST_NAME.pid 라는 경로 및 파일명을 갖는다.
./scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=maria
[maria@jv0574 mariadb]$ ./scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=maria
Installing MariaDB/MySQL system tables in '/box/MARIA_DATA' ...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:
'/MARIA/mariadb/bin/mysqladmin' -u root password 'new-password'
'/MARIA/mariadb/bin/mysqladmin' -u root -h jv0574 password 'new-password'
Alternatively you can run:
'/MARIA/mariadb/bin/mysql_secure_installation'
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.
You can start the MariaDB daemon with:
cd '/MARIA/mariadb' ; /MARIA/mariadb/bin/mysqld_safe --datadir='/box/MARIA_DATA'
You can test the MariaDB daemon with mysql-test-run.pl
cd '/MARIA/mariadb/mysql-test' ; perl mysql-test-run.pl
Please report any problems at http://mariadb.org/jira
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's strong and vibrant community:
https://mariadb.org/get-involved/
/etc/systemd/system 디렉토리에 maria.service 파일 생성
[Unit]
Description=MariaDB
#After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
#Alias=maria
[Service]
Type = forking
# Start main service
#ExecStart=/MARIA/mariadb/bin/mysqld_safe --user=maria
#ExecStart=/etc/init.d/maria start
ExecStart=/MARIA/mariadb/support-files/mysql.server start
- ExecStart=/MARIA/mariadb/support-files/mysql.server start 로 기동시 Type= forking 으로 설정해야한다.
- ExecStart=/MARIA/mariadb/bin/mysqld_safe --user=maria 기동시 Type=forking 있으면 기동이 제대로 되지 않는다.
기동
systemctl start maria중지
systemctl stop maria상태확인
- systemctl status maria
ps -ef | grep mysql
vi /box/MARIA_LOG/error/mysql.err
root@jv0574 [/etc/systemd/system]systemctl enable maria
- systemctl is-enable maria
- cd /etc/systemd/system/multi-user.target.wants
해당 디렉토리안에 maria.service 존재하면, OS 재부팅시 자동 DB 재기동
- service 파일 변경시, systemctl daemon-reload 명령어를 통해 변경사항 반영
- systemctl enable maria 로 등록시, Aliace 부분이 service 파일 이름과 같으면 오류 발생
ex) service 파일이름이 maria.service 일경우 , alias=maria.service이면 오류 발생
CentOS6 버전까지는 chkconfig 유틸을 사용하여 자동시작 등록하였으나,
CentOS7 버전부터는 systemctl을 사용한 자동시작을 권장한다.
기본적인 보안을 위한 여러 설정을 모아놓은 스크립트이다.
root 비번변경 / testdb 및 익명 계정 삭제 등의 작업을 진행한다.
[maria@adb1 mariadb]#vi bin/mysql_secure_installation
…
basedir=/MARIA/mariadb
…
[maria@jv0574 bin]$ mysql_secure_installation
The METADATA_LOCK_INFO plugin creates the METADATA_LOCK_INFO table in the INFORMATION_SCHEMA database. This table shows active metadata locks. The table will be empty if there are no active metadata locks.
root@jv0574 [/MARIA/mariadb/bin]./mysql -uroot -p
MariaDB [(none)]> INSTALL SONAME 'metadata_lock_info'
MariaDB [(none)]> SELECT * FROM information_schema.metadata_lock_info;
-- plugin 확인
show plugins
show global variables like 'simple_password_check%'
-- 설치
INSTALL SONAME 'simple_password_check';
-- UNINSTALL SONAME 'simple_password_check';
[mysqld]
simple_password_check = ON
simple_password_check_digits = 1 # 숫자포함
simple_password_check_letters_same_case = 0 # 대소문자 구분 안함
simple_password_check_minimal_length = 8
simple_password_check_other_characters = 1 # 특수문자 포함