[Real MySQL 8.0] MySQL 서버 설정

엄혜영·2024년 7월 18일
1

Real MySQL 8.0

목록 보기
3/9
post-thumbnail

리눅스 및 유닉스 계열의 OS 환경에서는 my.cnf 이름의 설정 파일을 사용한다.

해당 설정 파일을 아무 위치에서나 읽을 수 있는 것은 아니며, 지정된 위치가 있다.

MySQL 서버는 지정된 여러 개의 디렉터리를 순차적으로 탐색하며 처음 발견된 파일을 사용한다.

아래 커맨드를 사용해 해당 내용을 확인할 수 있는데, 탐색 위치 말고도 아주 많은 정보가 출력되므로 잘 찾아보도록 하자...

/usr/local/mysql/bin/mysql --help


설정 파일의 구성

하나의 설정 파일에는 여러 개의 설정 그룹을 담을 수 있으며, 대체로 실행 프로그램 이름을 그룹명으로 사용한다.

[mysqld]
user=mysql
port=3306
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld_safe]
log-error=/usr/local/mysql/data/mysql_error.log
pid-file=/usr/local/mysql/data/mysqld.pid

...

[그룹명]
설정값

참고로 그룹명 제대로 안넣어주면 서버 실행 자체가 되지 않으니 주의하자!!!


MySQL 시스템 변수

MySQL 서버는 가동하면서 설정 파일의 내용을 읽어 메모리나 작동 방식을 초기화하고, 접속된 사용자를 제어하기 위해 이러한 값을 별도로 저장해 둔다.

이렇게 저장된 값을 시스템 변수라고 하며, 각 시스템 변수는 MySQL 서버에 접속해 SHOW VARIABLES 또는 SHOW GLOBAL VARIABLES라는 명령으로 확인할 수 있다.

Server System Variable Reference

위의 링크로 접속해 아주 많은 시스템 변수를 확인할 수 있다.

더불어 5가지 속성값을 함께 확인할 수 있는데, 각 속성의 의미는 아래와 같다.

  • Cmd-Line: MySQL 서버의 명령행 인자로 변수의 값을 변경 가능한지 여부를 나타냄
  • Option File: my.cnf로 제어할 수 있는지 여부를 나타냄
  • System Var: 시스템 변수인지 여부를 나타냄
  • Var Scope: 시스템 변수의 적용 범위를 나타낸다.
  • Dynamic: 시스템 변수가 동적인지 정적인지 구분한다.

글로벌 변수와 세선 변수

시스템 변수는 적용 범위에 따라 글로벌 변수와 세션 변수로 나뉜다.

  • 글로벌 변수
    MySQL 서버 인스턴스에서 전체적으로 영향을 미치는 시스템 변수를 의미
    주로 MySQL 서버 자체에 관련된 설정인 경우가 많다.
    ex) InnoDB 버퍼 풀 크기(innodb_buffer_pool_size), MyISAM(key_buffer_size)의 키 캐시 크기 등

  • 세선 변수
    클라이언트가 MySQL 서버에 접속할 때 기본으로 부여하는 옵션의 기본값을 제어하는 데 사용된다.
    해당 시스템 변수가 서버와 클라이언트 간의 커넥션에서만 영향을 미친다.
    세션 변수는 커넥션 별로 설정값을 서로 다르게 지정할 수 있다.

  • Both
    세션 범위의 변수 가운데 MySQL 서버의 설정 파일(my.cnf)에 명시해 초기화할 수 있는 변수는 대부분 범위가 ‘Both’라고 명시돼 있다.

정적 변수와 동적 변수

시스템 변수는 MySQL 서버가 기동 중인 상태에서 변경 기능한지에 따라 동적 변수와 정적 변수로 구분된다.

  • 정적 변수
    디스크에 저장된 설정 파일(my.cnf 또는 my.ini)의 내용은 변경하더라도 MySQL 서버가 재시작을 하기 전에는 적용되지 않는다.
    SHOW 명령으로 적용된 변숫값을 확인하거나 SET 명령을 이용해 값을 바꿀 수 있다.
    SET 명령을 통해 변경되는 시스템 변숫값이 MySQL의 설정 파일인 my.cnf 파일에 반영되는 것은 아니기 때문에 현재 기동 중인 MySQL 인스턴스에서만 유효하다.

  • 동적 변수

SET PERSIST

해당 명령으로 시스템 변수를 변경하면 MySQL 서버는 변경된 값을 즉시 적용함과 동시에 별도의 설정 파일에 변경 내용을 추가로 기록해둔다.

SET PERSIST 명령은 세션 변수에는 적용되지 않는다.


실습

나는 /usr/local/mysql/etc 위치에 설정 파일을 넣어두었다.

앞선 예시 중 max_connections 변수의 값을 설정 파일에 지정해 실제 설정 파일이 적용되고 있는지 확인하였다.

주의!! 설정 파일을 변경한 뒤, MySQL 서버를 재시작 해야 설정이 적용된다.

profile
누워있는게 좋은 완벽주의자

0개의 댓글