반응형

- 디렉터리 및 환경 설정 관련 시스템 변수에 대한 설명

시스템 변수 내용
basedir 데이터베이스 홈 디렉토리
user 데이터베이스 사용 유저
port 데이터베이스 사용 포트(기본 포트 : 3306)
socket 사용할 소켓 저장 파일을 지정
pid_file PID 값을 저장하고 있는 파일을 지정
datadir 데이터 파일 디렉토리
tmpdir 임시 파일 디렉토리
character_set_server
collation_server
서버 기본 캐릭터셋
lower_case_table_names SQL에서 사용되는 테이블의 이름을 자동으로 모두 소문자로 치환
0 : SQL의 테이블 명을 소문자 치환하지 않음
1 : SQL의 테이블 명을 소문자 자동 치환
transaction_isolation Record 기반 복제 또는 복제 미사용(Record 기반이 아닌 경우)시 Read-Committed로 결정
* 메모리 관련 시스템 변수 설정
시스템 변수 내용
key_buffer_size 메모리에 보유된 인덱스 버퍼의 크기를 결정하는 MyISAM 변수이며 인덱스 엑세스 속도에 영향을 미침
innodb_buffer_pool_size * 디스크의 데이터를 메모리에 Caching함과 동시에 데이터의 변경을 버퍼링하는 역할을 하기 때문에 가능한 많은 할당이 필요
* 디스크로 Swap이 발생하지 않는 범위에서 설정

- 설정 파일 생성( my.cnf )
mariadb의 기본 설정 파일은 my.cnf 파일로 시스템 변수와 설정값을 저장된 파일
( 엔진, 데이터 파일, 로그 디렉터리의 위치를 설정 저장)
my.cnf의 기본 위치 : /etc/my.cnf
my.cnf --------------------------

[mysqld]
server-id     = 1
user = mysql

# File Path Config
basedir = /usr/local/mariadb
datadir = /data/mariadb/DATA
tmpdir  = /data/mariadb/TMP # 디스크에 임시 테이블이 생성할 때 경로
socket  = /data/mariadb/TMP/mysql.sock # 소켓 파일 경로(로컬 서버 접속에 사용)
log-bin = /data/mariadb/BINLOG/binary_log
pid-file      = /data/mariadb/mysqld.pid
open-files-limit     = 65535
port = 3306
default_authentication_plugin       = mysql_native_password
init_connect  = SET collation_connection = utf8_unicode_ci
init_connect  = SET NAMES utf8
character-set-server = utf8
collation-server = utf8_general_ci
max_connections      = 2400
max_prepared_stmt_count             = 1048576
event-scheduler      = ON
lower_case_table_names              = 1
wait_timeout  = 28800
interactive_timeout  = 28800
explicit_defaults_for_timestamp  # Add
max_allowed_packet   = 1G
table_open_cache     = 8192
thread_cache_size    = 32
lc_messages_dir      = /usr/local/mariadb/share
lc_messages   = en_US
plugin_dir    = /usr/local/mariadb/lib/plugin
skip-name-resolve
transaction-isolation               = READ-COMMITTED
slave_transaction_retry_errors      = "1158,1159,1160,1161,1429,2013,12701"
gtid-domain-id       = 1
performance_schema   = on
expire_logs_days     = 3 # binary log 보관기간(일), 이 기간이 지나면 자동 삭제
master_info_file     = /data/mariadb/master.info
relay_log_info_file  = /data/mariadb/relay-log.info
federated

##Mysql logging
slow-query-log       = on
slow-query-log-file  = /data/mariadb/ADMIN/slow_query.log
long_query_time      = 1
log-error     = /data/mariadb/ADMIN/error.log
general_log   = 0
general_log_file     = /data/mariadb/ADMIN/general_query.log
log_slow_admin_statements

#Buffer size
sort_buffer_size     = 128K      # 인덱스를 이용한 정렬이 불가능할 때 사용
read_buffer_size     = 128K      # 정렬 후 정렬 된 순서대로 다시 읽어 들이는데 > 사용하는 버퍼 default 사용
read_rnd_buffer_size = 128K      # Two-pass-algorithm 사용 시 정렬 된 데이터를 더사 호출할 때 사용
key_buffer_size      = 128K
join_buffer_size     = 256K
net_buffer_length    = 16K
myisam_sort_buffer_size             = 1M        # 8M -> 1M

#Innodb add setting
default-storage-engine              = InnoDB
innodb_data_home_dir = /data/mariadb/DATA
innodb_buffer_pool_load_at_startup  = ON
innodb_buffer_pool_dump_at_shutdown = ON
innodb_buffer_pool_size             = 4G # InnoDB 엔진으로 된 테이블과 인덱스를 캐시 하기 위한 메모리 버퍼 크기
innodb_file_per_table               = 1
innodb_log_file_size = 500M
innodb_log_files_in_group           = 3 
innodb_log_group_home_dir           = /data/mariadb/IBLOG
innodb_stats_auto_recalc            = 0
innodb_write_io_threads             = 12
innodb_read_io_threads              = 12
innodb_io_capacity   = 1000  #innodb_io_capacity = Disk IOPS
innodb_io_capacity_max              = 2000
innodb_flush_log_at_trx_commit      = 1
innodb_flush_method  = O_DIRECT
innodb_doublewrite   = 0
innodb_sync_spin_loops              = 20
innodb_buffer_pool_instances        = 8
innodb_buffer_pool_chunk_size       = 1342177280
innodb_adaptive_hash_index          = 1
innodb_flush_neighbors              = 0    #SSD=0, HDD=1

sync_binlog   = 1
binlog_cache_size    = 256K
max_binlog_size      = 100M # binary log file 최대 크기
log-bin-trust-function-creators     = 1
rpl_semi_sync_master_enabled        = 1
rpl_semi_sync_master_timeout        = 1000
binlog_format = row # binary log에 기록할 데이터 유형
binlog_row_image     = full

[client]
port = 3306
socket  = /data/mariadb/TMP/mysql.sock
default-character-set               = utf8

[mysql]
no-auto-rehash
show-warnings
default-character-set = utf8
prompt  = \u@\h:\d\_\R:\m:\\s> # SQL 프롬프트 설정
pager   = "less -n -i -F -X -E" # 데이터 출력시 페이징 처리

[mysqldump]
quick # 버퍼를 사용하지 말고, direct로 덤프받기
max_allowed_packet   = 1G
default-character-set               = utf8

'DBMS > MySQL&Mariadb' 카테고리의 다른 글

MariaDB replication 구성  (0) 2021.12.23
MariaDB 권한 관리  (0) 2021.12.23
MariaDB 사용자 관리  (0) 2021.12.23
MariaDB 데이베이스 관리  (0) 2021.12.23
MariaDB 설치  (0) 2021.12.23

+ Recent posts