데이터베이스

Mysql 설정 할 때 사용되는 my.cnf 에 대해 알아보겠습니다.

forward error correction Circle 2023. 9. 29. 12:01
반응형

Ⅰ. My.cnf 파일 이란? 

my.cnf 파일은 MySQL 데이터베이스 서버의 설정 파일 중 하나로, MySQL 서버의 동작을 제어하고 구성을 정의하는 데 사용됩니다. 이 파일은 주로 데이터베이스 관리자나 시스템 관리자가 MySQL 서버를 정의하고 최적화하는 데 사용됩니다. 

 

Ⅱ. my.cnf 특징

1) 위치: my.cnf 파일은 일반적으로 MySQL 설치 디렉토리 내에 위치하며, 주로 /etc/mysql/, /etc/my.cnf/, 또는 /usr/local/mysql/ 디렉토리 내에 있습니다. 파일 이름은 my.cnf이거나 my.ini일 수 있습니다.
2) 구성 옵션: my.cnf 파일은 MySQL 서버의 동작을 다양한 옵션과 설정으로 구성할 수 있는 텍스트 파일입니다. 예를 들어, 데이터베이스 경로, 포트 번호, 캐시 크기, 로깅 옵션, 문자 집합 설정 등을 지정할 수 있습니다.
3) 섹션: my.cnf 파일은 여러 섹션으로 나뉩니다. 각 섹션은 대괄호로 묶여 있으며, 해당 섹션에 속하는 설정 옵션들을 정의합니다. 예를 들어, [mysqld] 섹션은 MySQL 서버 데몬에 대한 설정을 정의하고, [client] 섹션은 MySQL 클라이언트 설정을 정의합니다.
4) 주석: # 기호로 시작하는 줄은 주석으로 처리되며, 설정 옵션에 대한 설명이나 비활성화된 옵션을 나타낼 때 주로 사용됩니다.
5) 기본 파일 생성 및 편집: my.cnf 파일이 없는 경우 MySQL 서버를 처음 설치하면 기본 설정 파일을 사용하게 됩니다. my.cnf 파일을 만들어 필요한 설정을 추가하거나 기존 파일을 편집하여 MySQL 서버 동작을 수정할 수 있습니다.
6) 재시작: my.cnf 파일을 수정한 후에는 MySQL 서버를 재시작하여 새로운 설정을 적용해야 합니다. 재시작 명령은 MySQL 서버의 운영 체제에 따라 다를 수 있습니다.

보안 주의: my.cnf 파일은 MySQL 서버의 중요한 설정을 포함하므로 보안을 유지하고 무단 액세스를 피하기 위해 이 파일에 대한 접근 권한을 제한해야 합니다.

 

서버를 운영하면서 로그가 중요한데, 중요한 이유는 어떤 문제가 생길 때 원인을 파악하기 쉽게 도와줍니다..파일의 의미는 아주 중요합니다. 문제가 발생했을 때, 그 원인 파악을 조금 더 쉽게 하도록 하여 해결 시간을 단축

 

Ⅲ. my.cnf 파일 설정

 

1. 로그 설정

리눅스/Unix 환경에서는 my.cnf 파일을 다음과 같은 내용을 추가합니다.

[mysqld]

1) 에러 로그 설정
log-error=/로그저장경로/error.log
2) 쿼리 로그 설정
log=/로그저장경로/query.log
3)  바이너리 로그 설정
log-bin=mysql-bin
4) 슬로우 쿼리(slow query) 로그 설정
slow query log =/로그저장경로/mysql-slow.log
long_query_time=5
5) UPDATE 쿼리 설정
log-update=update_logs

* 1) error.log는 MySQL 서버에서 발생하는 오류 및 경고 메시지를 기록하는 데 사용
   2) slow query log는 MySQL 서버에서 실행 시간이 지연된 쿼리를 로깅하는 데 사용
   3) MyISAM은 MySQL의 테이블 스토리지 엔진 중 하나이며, MyISAM 테이블에 대한 로그 정보를 기록하는 데 사용

 

2-1. 쿼리 로그

리눅스/Unix 환경에서는 my.cnf 파일을 다음과 같은 내용을 추가합니다.

[mysqld]
# MyISAM 로그
log-isam=/[로그를 저장할 경로]/myisamlog.log
# 쿼리 로그
log=/ [로그를 저장할 경로] /mysql.log
# 바이너리 로그
log-bin=/ [로그를 저장할 경로] /mysql-bins.log
# 슬로우 쿼리 로그
log-slow-queries=/ [로그를 저장할 경로] /mysql-slow.log
long_query_time=5

* general_log를 활성화하면 모든 쿼리가 로깅되므로 주의해야 합니다. 이것은 주로 디버깅 및 성능 문제 해결을 위한 목적으로 사용

 

2-2 . 쿼리 로그 (general_log 설정 방법)

mysql> show variables like 'general_log%';
+------------------+---------------------------------+
| Variable_name    | Value                           |
+------------------+---------------------------------+
| general_log      | OFF                             |
| general_log_file | /usr/local/mysql/general_log |
+------------------+---------------------------------+
 

# 로깅 (이후로 general_log_file에 실시간으로 기록됨)

mysql> set GLOBAL general_log='ON';

 

# 로깅 해제

mysql> set GLOBAL general_log='OFF';

* 수정 이후에는 mysql 재시작이 필요합니다. 

 

슬로우 쿼리 설정 후, 재시작시 unknown variable 'log-slow-queries' 와 같은 오류 메시지와 함께 mysql이 시작되지 않는 경우가 있습니다. 이럴 경우에는 아래 명령어를 이용합니다.

slow_query_log = 1

slow_query_log_file = /var/log/mysql/slow-queries.log

long_query_time = 1

 

 

반응형