본문 바로가기
Dev/DataBase

MariaDB my.cnf 설정 파일

by nakanara 2024. 5. 24.
반응형

My.cnf 설정 값 정보

[client] 
port          = 3306 # 사용 포트
socket      = /tmp/mysql.sock 
   
[mysqld] 
user         = mariadb # 기동 시 계정  
port          = 3309 # 사용 포트
socket      = /tmp/mysql.sock 
  
basedir     = /mariadb/mariadb # 설치 경로
datadir      = /mariadb_data/data # 데이터베이스 파일 경로
tmpdir       = /mariadb_data/tmp # 템프
  
## CHARACTER SET 
character-set-server = utf8mb4 
collation-server=utf8mb4_unicode_ci 
init_connect="set names utf8mb4" 
init_connect = "set collation_connection=utf8mb4_unicode_ci" 
    
## LOGGING CONFIG 
log_error = /mariadb_data/log/mysql.err 
slow_query_log_file = /mariadb_data/log/mysql-slow.log 
slow_query_log = 1 # 0=off, 1=on
long_query_time = 5 # 지연 쿼리 
general_log = 0 # 일반 sql 기록 옵션 0=off, 1=on
#general_log_file = /mariadb_data/log/general-log.log 
#log_timestamps = SYSTEM 
  
## SYSTEM CONFIG 
back_log = 50 # 서버가 처리할 수 있는 대기 중인 연결 요청의 최대 수, default=50
max_connections = 1000 # 서버가 동시에 허용할 수 있는 최대 클라이언트 연결 수, default=151
max_connect_errors = 9999 # 서버가 동일한 클라이언트 호스트로부터 허용할 수 있는 최대 연결 오류 수, 초과 시 접속 차단
# 차단 해제 방법 
## mysqladmin -u root -p flush-hosts
# 서버의 스레드 캐시 크기를 설정하는 데 사용됩니다. 스레드 캐시는 재사용 가능한 스레드를 보관하여 새로운 클라이언트 연결이 발생할 때마다 새 스레드를 생성하지 않고, 기존 스레드를 재활용함
thread_cache_size = 8 # 웹 서비스일 경우 유리

sort_buffer_size = 1M # 정렬 작업에 사용될 메모리 버퍼
join_buffer_size = 1M # 테이블을 조인할 때 사용하는 메모리 버퍼의 크기
read_buffer_size = 1M # 디스크에서 데이터를 읽어올 때 사용하는 버퍼의 크기
read_rnd_buffer_size = 2M # 인덱스를 통해 행을 읽을 때 사용하는 버퍼의 크기
 
# 하나의 네트워크 패킷으로 수신하거나 송신할 수 있는 최대 크기를 지정하는 옵션
# 네트워크 통신 중에 데이터베이스 서버와 클라이언트 간에 전송되는 데이터의 크기를 제한
max_allowed_packet = 1G 

# MySQL이 열 수 있는 테이블 캐시의 크기를 지정합니다. 이 캐시는 MySQL이 데이터베이스 테이블을 열 때 사용되며, 열려 있는 테이블의 정보를 메모리에 보관하여 테이블을 다시 열지 않고 재사용함으로써 성능을 향상
table_open_cache = 2000 
  
# 메모리에서 사용할 수 있는 힙 테이블의 최대 크기를 지정합니다. 힙 테이블은 디스크가 아닌 메모리에서 작동하는 임시 테이블로, 주로 정렬이나 그룹화와 같은 작업에 사용
max_heap_table_size = 16M 
# MySQL에서 임시 테이블을 메모리에 저장하는 데 사용할 수 있는 최대 메모리 양
tmp_table_size = 16M 
  
# MySQL 서버가 대기 상태에 있는 클라이언트와 연결을 유지하는 시간(초)
wait_timeout = 28800 # 8 * 60 * 60 = 8시 # default = 8시
# MySQL 서버가 대화형 클라이언트와의 대기 상태에 있는 연결을 유지하는 시간(초)을 지정하는 옵션
interactive_timeout = 28800 # 8시간
 
# MySQL에서 테이블 및 데이터베이스 이름에 대해 대소문자를 구분할지를 결정하는 옵션
# 0= 대소문자 구분, 1=대소문자 구분 안함, 
lower_case_table_names = 1 
# MySQL의 바이너리 로깅에서 사용자가 생성한 함수나 저장 프로시저를 믿을 것인지를 결정하는 옵션
# 0 = 사용자가 생성한 함수나 프로시저를 바이너리 로그에 기록 X, 복제 구성 시 함수, 프로시저 복제 안됨 
# 1= 사용자가 생성한 함수나 프로시저를 바이너리 로그 기록
log_bin_trust_function_creators = 1 

# 타임스탬프 열을 정의할 때 명시적으로 DEFAULT CURRENT_TIMESTAMP를 지정할지를 결정합니다. 이 옵션이 활성화되면, 명시적으로 DEFAULT CURRENT_TIMESTAMP를 사용하지 않으면 타임스탬프 열은 NULL을 허용
explicit_defaults_for_timestamp = 1 

# MySQL 서버가 클라이언트 호스트명을 해결하지 않도록 하는 옵션입니다. 이 옵션을 사용하면 MySQL 서버는 클라이언트의 IP 주소로만 접근을 허용하며, 클라이언트의 호스트명을 해결하지 않습니다. 이를 통해 클라이언트 연결 시간을 단축하고, DNS 조회로 인한 부하를 줄일 수 있습니다.
skip-name-resolve 
   
## TRANSACTION ISOLATION CONFIG 
# 트랜잭션 간의 격리 수준을 설정하는 옵션
## READ-COMMITTED: 다른 트랜잭션이 커밋된 데이터만 볼 수 있습니다. 커밋되지 않은 데이터에 대한 읽기가 차단
## REPEATABLE-READ: 같은 쿼리를 실행할 때마다 일관된 결과를 보장합니다. 한 트랜잭션이 읽은 데이터는 다른 트랜잭션에서 변경되지 않습니다.(기본 값) 
transaction-isolation = READ-COMMITTED 
  
## INNODB OPTION

# MySQL에서 새로운 테이블을 생성할 때 사용할 기본 스토리지 엔진
default-storage-engine = innodb 
# InnoDB 스토리지 엔진에서 사용되는 메모리 버퍼 풀의 크기를 지정하는 옵션
# InnoDB가 데이터와 인덱스를 메모리에 캐싱하여 디스크 I/O를 줄이고 성능을 향상
# 일반적으로 시스템의 총 메모리 크기의 약 50%에서 80% 정도로 설정
innodb_buffer_pool_size = 4G
# InnoDB 스토리지 엔진에서 데이터 파일을 구성하는 방법을 지정하는 옵션
innodb_data_file_path = ibdata1:1G;ibdata2:1G;ibdata3:10M:autoextend 
# 데이터 경로 
innodb_data_home_dir = /mariadb_data/data/ 
# InnoDB 스토리지 엔진에서 트랜잭션 로그를 디스크에 언제 쓸지를 제어하는 옵션
##  0: 트랜잭션 커밋 시 로그를 메모리에만 쓰고, 디스크에 플러시하지 않습니다. 이는 성능을 향상하지만 장애 발생 시 데이터 손실이 발생
## 1: 트랜잭션 커밋 시 로그를 디스크에 즉시 플러시합니다. 이는 ACID 특성을 보장하지만 성능에 영향
## 2: 트랜잭션 커밋 시 로그를 디스크에 플러시하지만, 메모리에는 쓴 후 즉시 디스크에 플러시 하지 않습니다. 이는 일반적으로 1보다 높은 성능을 제공하면서 ACID 특성을 유지
innodb_flush_log_at_trx_commit = 1 
# InnoDB 스토리지 엔진에서 트랜잭션 로그를 메모리에 유지하는 버퍼의 크기를 지정
innodb_log_buffer_size = 16M 
# InnoDB 스토리지 엔진에서 사용되는 트랜잭션 로그 파일의 크기
innodb_log_file_size = 512M 
# InnoDB 스토리지 엔진에서 사용하는 트랜잭션 로그 파일의 그룹에 속하는 로그 파일의 수를 설정
innodb_log_files_in_group = 3 
# InnoDB 스토리지 엔진에서 사용하는 트랜잭션 로그 파일의 그룹이 위치한 디렉토리를 지정
innodb_log_group_home_dir = /mariadb_data/data 
# InnoDB 스토리지 엔진에서 데이터 파일과 로그 파일을 디스크에 쓸 때 사용하는 메서드를 지정하는 옵션
innodb_flush_method=O_DIRECT 
# InnoDB 스토리지 엔진에서 사용되는 스레드 동시성 수를 제어하는 옵션
## CPU core * 2 
innodb_thread_concurrency = 0 
# InnoDB 스토리지 엔진에서 데이터와 인덱스 변경에 대한 더티 페이지의 최대 비율을 지정하는 옵션
innodb_max_dirty_pages_pct = 90 # 0 ~ 99 백분
# InnoDB 스토리지 엔진에서 트랜잭션이 락을 대기하는 시간을 지정하는 옵션입니다. 이 옵션은 다른 트랜잭션이나 세션에 의해 소유된 락을 기다리는 트랜잭션의 최대 대기 시간을 설정
innodb_lock_wait_timeout = 50 # 50초 대
# InnoDB 버퍼 풀을 나누는 데 사용되는 인스턴스의 수를 설정하는 옵션
innodb_buffer_pool_instances = 8 
# InnoDB 스토리지 엔진이 디스크에서 데이터를 읽을 때 사용하는 I/O 스레드의 수를 설정
innodb_read_io_threads = 8 
# InnoDB 스토리지 엔진이 디스크에 데이터를 쓸 때 사용하는 I/O 스레드의 수를 설정하는 옵션
innodb_write_io_threads = 8 
# MySQL이 InnoDB 스토리지 엔진에서 데이터베이스 복구 시도를 강제하는 데 사용되는 옵션입니다. 이 옵션을 사용하여 MySQL 서버가 InnoDB 데이터베이스를 부팅할 때 복구 모드로 진입하도록 강제
# 잘못된 설정은 데이터 손실을 유발
## 0: 복구 모드를 사용하지 않음. 기본 값
## 5: 데이터베이스 복구 시도를 중지하고, 테이블 공간 복구를 시도
#innodb_force_recovery = 5 

## MYSQL DUMP
[mysqldump]
# 이터베이스를 백업할 때 테이블을 잠그지 않고 백업하는 옵션입니다. 이 옵션을 사용하면 데이터베이스가 백업 중에도 계속해서 읽을 수 있으므로, 데이터베이스의 응답성을 유지
quick
# 백업시 네트워크 전송에 허용되는 최대 패킷 크기를 지정
max_allowed_packet = 1G

## MYSQL 

[mysql]
# MySQL 클라이언트가 자동으로 테이블 및 데이터베이스 이름을 재갱신하지 않습니다. 기본적으로 MySQL 클라이언트는 쿼리를 실행할 때마다 사용 가능한 테이블 및 데이터베이스 이름을 자동으로 재갱신(rehash)
# 테이블 및 데이터베이스 이름을 자동으로 재해시하는 것은 일반적으로 편리하지만, 대규모의 데이터베이스나 많은 수의 테이블이 있는 경우에는 조금의 지연을 초래
no-auto-rehash


[mysqld_safe]
# MySQL 서버가 열 수 있는 파일 디스크립터의 제한을 설정하는 옵션
#open-files-limit = 65535

반응형

'Dev > DataBase' 카테고리의 다른 글

MaxScale - Filter  (0) 2024.10.25
maxscale.cnf 설정 속성  (0) 2024.10.25
MHA vs MaxScale 장단점 비교  (0) 2024.05.06
MariaDB 간략한 정리  (0) 2024.01.18
MariaDB 이중화 솔루션 MaxScale  (0) 2023.12.06