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

🗂️ my.cnf 위치와 적용 우선순위
MySQL은 다양한 경로에서 my.cnf 또는 설정 파일을 탐색한다.
버전과 배포방식(Linux 패키지, Docker, RDS 등)에 따라 적용 위치가 다를 수 있다.
✅ my.cnf 탐색 우선순위 (MySQL 공식 기준)
- /etc/my.cnf
- /etc/mysql/my.cnf
- /usr/local/mysql/etc/my.cnf
- ~/.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
반응형
'DB' 카테고리의 다른 글
| [MySQL] (환경설정5️⃣) my.cnf 실전 튜닝: 운영환경별 추천값 정리 (0) | 2025.07.15 |
|---|---|
| [MySQL] (환경설정4️⃣) query_cache는 아직 유효한가? 설정 전략 분석 (0) | 2025.07.15 |
| [MySQL] (환경설정3️⃣) 정렬 성능 향상: sort_buffer_size 설정법 (1) | 2025.07.14 |
| [MySQL] (환경설정2️⃣) InnoDB Buffer Pool 최적화 전략 (2) | 2025.07.14 |
| [MySQL] (백업/복구6️⃣) 백업 복구 실수 방지 체크리스트와 실무 팁 💡 (4) | 2025.07.12 |
| [MySQL] (백업/복구5️⃣) 백업 자동화 스크립트 실무 적용 예제 🤖 (2) | 2025.07.12 |
| [MySQL] (백업/복구4️⃣) PITR(Point In Time Recovery) 원리와 설정 실습 (2) | 2025.07.12 |
| [MySQL] (백업/복구3️⃣) Binary Log 기반 백업 전략과 설정법 (2) | 2025.07.12 |