본문 바로가기
정보관리(데이터베이스, DB)/MySQL

MySQL 설정파일 구성, my.cnf 기초!

by 3604 2023. 8. 7.
728x90

출처: https://developsd.tistory.com/121

MySQL이 뭔지는 알지만 설정파일에 대해서는 잘 모르는 경우가 많다. 직접 설치를 할때 아주 잠시 지나갔던 파일로 오늘은 해당 파일에 대해서 자세히 알아보도록 하자.

 

MySQL 서버는  하나의 설정 파일만 사용한다. 유닉스 계열에서 my.cnf 라는 이름을 쓰며,  파일의 이름은 변경할  없다. MySQL 서버는 시작될 때만  설정 파일을 참조하는데, 경로가  하나로 고정되어 잇는 것은 아니며, 지정된 여러 디렉토리를 탐색하면서 처음 발견된 my.cnf 파일을 사용한다.

 

사용중인 MySQL 서버가 어느 디렉토리에 있는 my.cnf 파일을 읽는지 궁금하다면 아래와 같이 실행 하면 된다. 아래 명령어를 실행하면 상당히 많은 양의 내용이 출력 된다. 중간쯤 있는  "Default options ...."  부분 아래를 보면 파일 위치를 확인 가능하다. 나온 순서 대로 파일을 찾고 있는 것을   있다.

mysql --help

(중략)

 

MySQL 서버는  하나의 설정 파일 my.cnf 사용하지만 설정 파일이 위치한 디렉토리는 여러 곳일  있다. 만약 파일이 여러개라면 어떤 파일을 참조해서 가동했는지 알기 위해서는 "mysql --help" 명령어로 적용 순서를 확인   있다.

 

 

 

설정파일의 구성

 

MySQL 설정 파일은 하나의 my.cnf 파일에 여러 개의 설정 그룹을 담을  있으며, 대체로 바이너리 프로그램 이름을 그룹명으로 사용한다. 초기 설치를 하고 나면 아래와 같이 설정 파일을 vi로 열었을 때 기본 설정이 되어 있는 것을 볼 수 있다. 

 

 

아래 파일은 간단한 MySQL 설정 파일의 구성이다. 이 설정 파일이 MySQL 서버만을 위한 설정 파일 이라면 [mysqld] 그룹만 명시해도 된다. MySQL 서버뿐 아니라 MySQL 백업을 위한 dump, 클라이언트 등에도 공용으로 사용하고 싶다면 해당 설정파일에 설정을 작성할 수 있다.

[client]
default-character-set = utf8

[mysql]
soket = /usr/local/mysql/tmp/mysql.sock
port = 3304

[mysqldump]
soket = /usr/local/mysql/tmp/mysql.sock
port = 3305

[mysqld_safe]


[mysqld]
soket = /usr/local/mysql/tmp/mysql.sock
port = 3306

 

MySQL 시스템 변수

MySQL 서버는 기동하면서 설정 파일의 내용을 읽어 메모리나 작동 방식을 초기화하고, 접속된 사용자를 제어하기 위해 값을 별도로 저장해 둔다. MySQL 서버에서는 이렇게 저장된 값을 시스템 변수라고 한다. 시스템 변수는 MySQL 서버에 접속해서 아래 명력어로 확인 가능하다.

  • SHOW VARIABLES
  • SHOW GLOBAL VARIABLES

 

 

MySQL 시스템 변수는 적용 범위에 따라 글로벌 변수와 세션 변수로 나누어 지며, 둘다 포함하는 경우에는 "Both" 표시되어 있다.

  • 글로벌 범위의 시스템 변수는 하나의 MySQL  서버 인스턴스에서 전체적으로 영향을 미치는 시스템 변수를 의미, 주로 MySQL 서버 자체 관련 설정
    • 예시) 퀴리 캐시의 크기 (query_cache_size) 등이 있음
  • 세션 범위의 시스템 변수는 MySQL 클라이언트가 MySQL 서버에 접속할  기본적으로 부여하는 옵션의 기본값을 제어하는  사용, 세션 변수는  커넥션별로 설정값을 다르게 지정할  있지만 한번 연결된 커넥션의 세션 변수는 서버에서 강제로 변경할  없음
    • 예시) 클라이언트에서 쿼리 단위로 자동 커밋을 수행할지 여부 결정하는 AutoCommit
728x90