Search
Duplicate
4️⃣

서버 설정

MySQL 서버는 단 하나의 설정 파일을 사용한다.
my.cnf, my.ini

1. 설정 파일의 구성

대체로 MySQL 설정 파일은 하나의 my.cnfmy.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 서버는 변경된 값을 즉시 적용함과 동시에 별도의 설정 파일에 변경 내용을 기록해둔다.
이후 시스템을 새로 시작하면 이 파일을 같이 참조하여 시스템 변수를 적용한다.