•
MySQL 서버는 단 하나의 설정 파일을 사용한다.
◦
my.cnf, my.ini 등
1. 설정 파일의 구성
•
대체로 MySQL 설정 파일은 하나의 my.cnf나 my.ini파일에 여러 개의 설정 그룹을 담을 수 있으며 대체로 실행 프로그램 이름을 그룹명으로 사용한다.
•
설정 파일의 각 그룹은 같은 파일을 공유하지만 서로 무관하게 적용된다.
2. MySQL 시스템 변수의 특징
•
시작시 설정 파일의 내용을 읽어 메모리나 작동 방식을 초기화하고 접속된 사용자를 제어하기 위한 값을을 별도로 정의하는데, 이를 시스템 변수라고 한다.
•
각 시스템 변수는 SHOW GLOBAL VARIABLES로 확인할 수 있다.
•
시스템 변수 값이 MySQL 서버와 클라이언트에 영향을 미치는지를 확인하려면 글로벌 변수인지, 세션 변수인지 확인해야 한다.
Name | Cmd-Line | Option File | System Var | Var Scope | Dynamic |
activate_all_roles_on_login | Yes | Yes | Yes | Global | Yes |
admin_address | Yes | Yes | Yes | Global | No |
admin_port | Yes | Yes | Yes | Global | No |
time_zone | No | No | Yes | Both | Yes |
sql_log_bin | No | No | Yes | Session | Yes |
◦
Cmd-Line: MySQL 서버의 명령행 인자로 설정될 수 있는지 여부를 나타낸다. 이 값이 ‘Yes’이면 명령행 인자로 변경이 가능하다는 것
◦
Option file: MySQL의 설정 파일인 my.cnf(또는 my.ini)로 제어할 수 있는지 여부를 나타냄
◦
System Var: 시스템 변수인지 아닌지를 나타낸다.
◦
Var Scope: 시스템 변수의 적용 범위, 서버 전체(Global), MySQL 서버와 클라이언트 간의 커넥션(Session), 둘다 Both
◦
Dynamic: 시스템 변수가 동적인지 정적인지 구분하는 변수
3. 글로벌 변수와 세션 변수
•
MySQL의 시스템 변수는 적용 범위에 따라 글로벌 변수와 세션 변수로 나뉨
◦
글로벌 변수
▪
글로벌 범위의 시스템 변수는 하나의 MySQL 서버 인스턴스에서 전체적으로 영향을 미치는 시스템 변수로 서버 자체에 관련된 설정이 주로 많다.
◦
세션 변수
▪
세션 범위의 시스템 변수는 MySQL 클라이언트가 MySQL 서버에 접속할 때 기본으로 부여하는 옵션의 기본값을 제어하는데 사용한다.
▪
클라이언트의 필요에 따라 개별 커넥션 단위로 다른 값으로 변경할 수 있는 것이다.
▪
기본값은 글로벌 시스템 변수이며 각 클라이언트가 가지는 값이 세션 시스템 변수다.
4. 정적 변수와 동적 변수
•
MySQL 서버가 기동 중인 상태에서 변경 가능한지, 아닌지에 따라 동적 변수, 정적 변수로 구분한다.
•
SHOW 명령으로 MySQL 서버에 적용된 변숫값을 확인하거나 SET 명령을 이용해 값을 바꿀 수 있다.
5. SET PERSIST
•
MySQL 서버의 시스템 변수는 동적 변수와 정적 변수로 구분되는데, 동적 변수의 경우 MySQL 서버에서 SET GLOBAL 명령으로 변경하면 서버에 반영된다.
•
동적으로 변경이 가능한 변수들을 변경한 후, 이를 시스템 설정 파일에도 적용을 해두어야하는데, 반영하지 않을 경우, 기존 값으로 재시작되고 오류가 발생한다.
•
SET PERSIST를 사용하여 시스템 변수를 변경하면 MySQL 서버는 변경된 값을 즉시 적용함과 동시에 별도의 설정 파일에 변경 내용을 기록해둔다.
•
이후 시스템을 새로 시작하면 이 파일을 같이 참조하여 시스템 변수를 적용한다.