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

6. my.cnf 파일 예제

server-id = 1 user = mysql port = 3306 basedir = /usr/local/mysql datadir = /usr/local/mysql/data tmpdir = /usr/local/mysql/tmp character-set-server = utf8 collation-server = utf8_general_ci default-storage-engine = InnoDB skip-name-resolve event-scheduler = OFF max_connections = 300 thread_cache_size = 50 wait_timeout = 28800 sort_buffer_size = 128K query_cache_size = 32M query_cache_limit = 2M transaction-isolation = REPEATABLE_READ innodb_buffer_pool_size = 10G innodb_log_group_home_dir = /usr/local/mysql/data innodb_log_buffer_size = 16M innodb_log_file_size = 1024M innodb_log_files_in_group = 2 innodb_lock_wait_timeout = 60 innodb_flush_log_at_trx_commit = 1 general_log = 0 general_log_file = /usr/local/mysql/logs/general_query.log slow-query-log = 1 long_query_time = 1 slow_query_log_file = /usr/local/mysql/logs/slow_query.log log-bin = /usr/local/mysql/logs/binary_log max_binlog_size = 512M expire_logs_days = 14 binlog_cache_size = 128K read_only
Makefile
복사