[MySQL] MySQL 시스템 변수, 클린 셧다운

[FISTUDY] RealMySQL 1회차입니다. 이번 글에서는 클린 셧다운의 개념과 설정 방법, 그리고 MySQL 시스템 변수의 분류와 관리 방법에 대해 자세히 알아보겠습니다.

1. 클린 셧다운이란?

MySQL 서버에서는 실제 트랜잭션이 정상적으로 커밋돼도 데이터 파일에 변경된 내용이 기록되지 않고 리두 로그 파일에만 기록될 수 있습니다.

이를 방지하기 위해 MySQL 서버가 종료될 때 모든 커밋된 내용을 데이터 파일에 기록하도록 설정할 수 있습니다. 이렇게 모든 커밋된 데이터를 데이터 파일에 적용하고 종료하는 것을 클린 셧다운(Clean Shutdown)이라고 합니다.

MySQL 서버에서 innodb_fast_shutdown 옵션을 0으로 설정합니다.

SQL
mysql> SET GLOBAL innodb_fast_shutdown=0;

2. MySQL 시스템 변수

MySQL 시스템 변수는 서버를 가동할 때나 접속된 사용자를 제어하기 위해 저장해둔 값입니다. 시스템 변수는 SHOW GLOBAL VARIABLES 명령을 통해 확인할 수 있습니다.

2-1. 시스템 변수 특징

mysql 서버 시스템 변수 설명 페이지

  1. Cmd-Line: MySQL 서버의 명령행 인자로 설정될 수 잇는지 여부를 나타냅니다. 이 값이 ‘Yes’이면 명령행 인자로 이 시스템 변수의 값을 변경하는 것이 가능하다.
  2. Option file: MySQL의 설정파일인 my.cnf로 제어할 수 있는지 여부를 나타냅니다.
  3. System Var: 시스템 변수인지 아닌지를 나타냅니다.
  4. Var Scope: 시스템 변수의 적용 범위를 나타낸다. MySQL 서버 전체 대상(글로벌), MySQL 서버와 클라이언트 간의 커넥션(세션)만인지 구분한다.
  5. Dynamic: 시스템 변수가 동적인지 정적인지 구분하는 변수이다. Yes 면 동적변수입니다.

2-1. 적용 범위에 따른 분류

  1. 글로벌 범위의 시스템 변수
    • 하나의 MySQL 서버 인스턴스 전체에 영향을 미치는 변수입니다.
    • 주로 MySQL 서버 자체에 관련된 설정입니다.
    • 예시: InnoDB 버퍼 풀 크기(innodb_buffer_pool_size), MyISAM의 키 캐시 크기(key_buffer_size)
  2. 세션 범위의 시스템 변수
    • MySQL 클라이언트가 서버에 접속할 때 기본으로 부여하는 옵션의 기본값을 제어합니다.
    • 클라이언트가 접속 시 기본값을 가집니다.
    • 세션 변수는 개별 커넥션 단위로 변경 가능합니다.
    • 예시: autocommit 변수

2-2. 변경 가능 여부에 따른 분류

  1. 동적 변수
    • MySQL 서버가 가동 중일 때 변경 가능합니다.
    • SET 명령어로 변경 가능합니다.
    • MySQL 서버 재시작 시 초기화됩니다.
    • 예시: SET GLOBAL job_buffer_pool_size=...
  2. 정적 변수
    • MySQL 서버 재시작 없이 변경 불가합니다.
    • 설정 파일에서 변경 필요합니다.
    • 예시: my.cnf 파일에서 설정
    • SET PERSIST 명령어
      • SET PERSIST 명령으로 시스템 변수를 변경하면 서버는 자동으로 GLOBAL 시스템 변수의 변경으로 인식하고 변경합니다. 그 이유는 SET PERSIST 명령은 server 와 connection 을 위한 세션 변수에는 적용되지 않기 때문입니다.
      • SET PERSIST: 변경된 값을 즉시 적용하고 설정 파일(mysqld-auto.cnf)에 저장할 수 있습니다. SET PERSIST innodb_buffer_pool_size=...;
      • SET PERSIST ONLY: 실행 중인 서버에는 적용하지 않고 다음 재시작을 위해 mysqld-auto.cnf 파일에만 저장할 수 있습니다. SET PERSIST ONLY
      • 변경된 변수 참조: performance_schema.variables_info 뷰와 performance_schema.persisted_variables 테이블에서 참조 가능합니다.
      • 변경된 변수 삭제: RESET PERSIST 명령을 사용하여 안전하게 삭제하는 것이 좋습니다. RESET PERSIST innodb_buffer_pool_size;

본글은 RealMySQL을 정리한 글입니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top