DB

[MySQL] (환경설정1️⃣) my.cnf 구조와 설정 항목 총정리

인생아 2025. 7. 14. 12:57
반응형

MySQL의 성능과 안정성은 대부분 설정 파일인 my.cnf에 달려 있다.
my.cnf는 MySQL 서버의 기본 동작 방식부터 메모리 사용량, 캐시 전략, 에러 로그 위치까지 모두 제어하는 운영 핵심 설정 파일이다.

🗂️ my.cnf 위치와 적용 우선순위

MySQL은 다양한 경로에서 my.cnf 또는 설정 파일을 탐색한다.
버전과 배포방식(Linux 패키지, Docker, RDS 등)에 따라 적용 위치가 다를 수 있다.

✅ my.cnf 탐색 우선순위 (MySQL 공식 기준)

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. /usr/local/mysql/etc/my.cnf
  4. ~/.my.cnf (유저 홈 디렉터리)

Linux 환경에선 대부분 /etc/my.cnf 또는 /etc/mysql/my.cnf가 사용된다.

반응형

✅ 현재 사용 중인 설정 파일 경로 확인

mysql --help | grep -A1 "Default options"

또는 MySQL 내부에서 아래 명령어로 확인 가능:

SHOW VARIABLES LIKE 'pid_file';

🔧 my.cnf 기본 구조

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr
datadir = /var/lib/mysql
port = 3306
bind-address = 0.0.0.0
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

[mysqldump]
quick
max_allowed_packet = 64M

[mysql]
default-character-set = utf8mb4
  • [client]: CLI에서 MySQL 접속 시 사용하는 기본값
  • [mysqld]: 서버 실행 시 설정되는 핵심 파라미터
  • [mysqldump]: 덤프 백업 시 적용
  • [mysql]: mysql 클라이언트 명령어 실행 시 사용

🔍 자주 사용하는 핵심 설정 항목

항목 설명
port MySQL 포트 번호
datadir 데이터 파일이 저장되는 디렉터리
socket Unix Socket 파일 경로
user MySQL 데몬 실행 사용자
log-error 에러 로그 파일 경로
pid-file MySQL 프로세스 ID 파일
max_connections 동시에 연결 가능한 최대 클라이언트 수
innodb_buffer_pool_size InnoDB 버퍼풀 크기 (메모리 캐시의 핵심)
sort_buffer_size 쿼리 정렬용 버퍼 크기
read_buffer_size 순차 읽기 시 버퍼 크기
query_cache_size 쿼리 캐시 크기 (MySQL 5.x에서 사용)
tmp_table_size 임시 테이블 최대 크기
max_allowed_packet 하나의 패킷으로 허용되는 최대 크기
 
반응형

📌 설정 변경 적용 방법

my.cnf를 수정한 후에는 MySQL 서비스를 재시작해야 적용된다.

sudo systemctl restart mysqld

Docker 사용 시에는 재배포 필요:

docker restart <mysql-container-name>

단, SET GLOBAL 명령으로 일시적으로 설정 변경도 가능하다:

SET GLOBAL max_connections = 200;

하지만 재시작 후 사라지므로 영구 적용하려면 반드시 my.cnf에 반영해야 한다.

🧠 실무 팁

  • 설정 변경 전 반드시 SHOW VARIABLES로 현재 값을 백업해 둘 것
  • 설정을 잘못 넣으면 MySQL이 부팅되지 않거나 crash 로그가 쌓이기 시작한다
  • 설정 적용 전 mysqld --verbose --help로 파라미터 유효성 검사 가능
  • 실무에서는 my.cnf를 운영, 테스트, 개발 서버 별로 분리하여 관리하는 것이 안전하다

✅ 정리

  • my.cnf는 MySQL 서버 전체 동작의 중심이며, 성능에 직접 영향을 준다.
  • 적용 위치와 우선순위를 잘 알고 있어야 설정이 실제 반영되는지 확인할 수 있다.
  • 각 섹션은 역할이 다르며, mysqld 영역에 대부분의 튜닝 설정이 집중된다.
  • 변경 시 반드시 백업하고, 검증 후 적용해야 한다.

🔗 공식 문서 참고
MySQL 8.0 Reference Manual – Server Option and Variable Reference

 

반응형