실제 MySQL 8.0 – MySQL 서버 설정


일반적으로 구성 파일이 사용됩니다.

– Linux: my.cnf / Windows: my.ini 이름 사용

MySQL 시스템 변수의 속성

  • MySQL 서버가 시작되면 구성 파일의 내용을 읽어 메모리나 동작 방식을 초기화하고 이들 값을 별도로 저장해 연결된 사용자를 제어한다.
  • MySQL 서버 프로세스는 다음과 같이 값을 저장합니다. 시스템 변수그것은 말한다.

글로벌 및 세션 변수

  • 시스템 변수의 값이 MySQL 서버와 클라이언트에 어떤 영향을 미치는지 판단하기 위해서는 각 변수가 전역 변수인지 세션 변수인지 구분할 수 있어야 합니다.
  • 시스템 변수 속성에서 Var Scope 속성은 시스템 변수의 범위를 지정합니다. 전체 MySQL 서버를 주소 지정(GLOBAL)할지 아니면 MySQL 서버와 클라이언트 간의 연결만 지정(세션)할지 여부를 결정합니다. 일부 변수는 모두에 적용될 수 있습니다.
  • 세션 변수는 연결마다 다르게 설정할 수 있으며, 한 번 연결된 연결의 세션 변수는 서버에서 강제로 변경할 수 없습니다.

정적 및 동적 변수

  • 시스템 변수는 MySQL 서버가 실행되는 동안 변경할 수 있는지 여부에 따라 동적 또는 정적으로 분류됩니다.
  • 하드 디스크에 저장된 구성 파일의 내용이 변경되더라도 서버를 다시 시작해야 적용됩니다.
  • 단, SHOW 명령어로 생성된 변수 값을 확인할 수 있다. SET 명령으로 값을 변경할 수도 있습니다.
  • 그러나 SET 명령으로 변경된 변수 값은 실행 중인 MySQL 인스턴스에서만 유효합니다.
  • 영구적으로 사용하려면 my.cnf(my.ini) 파일도 수정해야 합니다.
  • MySQL 8.0 이상부터는 실행 중인 서버의 시스템 번호를 변경하기 위해 SET PERSIST 명령을 사용하며 자동으로 구성 파일로 기록된다.
  • 위에서 언급한 바와 같이 동적 변수는 SET 명령으로 변경할 때 서버를 재시작할 필요는 없지만 설정 파일에는 영향을 주지 않으므로 SET PERSIST 명령을 사용해야 합니다.

지속 설정

  • 동적 변수의 경우 SET GLOBAL 명령어를 이용하여 서버에 바로 반영할 수 있습니다.
  • 예를 들어 최대 연결 수를 제한하는 시스템 변수인 max_connections라는 동적 시스템 변수를 사용하여 연결 수를 더 늘릴 수 있습니다.
SET GLOBAL max_connections = 5000;
  • 이러한 방식으로 시스템 변수는 작동 중에 변경될 수 있습니다. 다만, 이와 같이 SET GLOBAL 명령어를 사용하는 경우에는 서버에 별도로 적용하여야 하는데, 적용되지 않는 경우를 대비하여 SET PERSIST를 사용한다.
  • SET PERSIST 명령은 세션 변수에 적용되지 않습니다.