[Real MySQL 8.0 1권] 02. 설치와 설정

유혁·2026년 2월 4일

Real MySQL 8.0

목록 보기
3/22
post-thumbnail

본 포스트는 Real MySQL 8.0 1권을 읽은 뒤 정리하는 글입니다.


2.1 MySQL 서버 설치

2.1.1 버전과 에디션(엔터프라이즈와 커뮤니티) 선택

MySQL 서버의 두 에디션의 경우 상용화 방식은 모두 동일하지만, 아래의 특정 부가 기능들은 엔터프라이즈 에디션에서만 지원한다.

  • Thread Pool
  • Enterprise Audit
  • Enterprise TDE
  • Enterprise Authentication
  • Enterprise Firewall
  • Enterprise Monitor
  • Enterprise Backup
  • MySQL 기술지원

2.3 MySQL 서버 업그레이드

MySQL 서버 업그레이드의 두 가지 방법

인플레이스 업그레이드(In-Place Upgrade)

MySQL 서버의 데이터 파일을 그대로 두고 업그레이드

논리적 업그레이드 (Logical Upgrade)

mysqldump 도구 등을 통해 MySQL 서버의 데이터를 SQL 문장이나 텍스트 파일로 덤프한 후, 새로 업그레이드된 버전의 MySQL 서버에서 덤프된 데이터를 적재

2.3.1 인플레이스 업그레이드 제약 사항

마이너(패치) 버전 간 업그레이드, 즉 동일 메이저 버전에서 마이너 버전 간 업그레이드는 대부분 데이터 파일의 변경 없이 진행되며, 여러 버전을 건너뛰어 업그레이드 또한 허용

메이저 버전 간 업그레이드의 경우 대부분 크고 작은 데이터 파일의 변경이 필요, 반드시 직전 버전에서만 업그레이드 가능

ex) MySQL 5.1에서 MySQL 8.0으로 업그레이드 하는 경우
1. MySQL 5.1 -> 5.5 버전 업그레이드
2. MySQL 5.5 -> 5.6 버전 업그레이드
3. MySQL 5.6 -> 5.7 버전 업그레이드
4. MySQL 5.7 -> 8.0 버전 업그레이드

두 단계 이상을 한 번에 업그레이드 해야 하는 경우 논리적 업그레이드가 더 좋은 방법일 수 있음

⚠️ 주의사항
메이저 버전 업그레이드가 특정 마이너 버전에서만 가능한 경우가 있으므로, 항상 메이저 버전 업그레이드 시 MySQL 서버의 메뉴얼을 정독한 후 진행을 권장

2.3.2 MySQL 8.0 업그레이드 시 고려 사항

MySQL 5.7 버전과 8.0 버전의 기본적인 부분의 차이점 및 8.0 버전에서 사용할 수 없는 기능이 존재하여 업그레이드 전 검토 필요

  • 사용자 인증 방식 변경
  • MySQL 8.0과의 호환성 체크
  • 외래키 이름의 길이
  • 인덱스 힌트
  • GROUP BY에 사용된 정렬 옵션
  • 파티션을 위한 공용 테이블스페이스

2.3.3 MySQL 8.0 업그레이드

MySQL 5.7에서 MySQL 8.0 업그레이드의 두 가지 단계

  1. 데이터 딕셔너리 업그레이드
  2. 서버 업그레이드

2.4 서버 설정

2.4.2 MySQL 시스템 변수의 특징

시스템 변수가 가지는 5가지 속성의 의미

  • Cmd-Line
    MySQL 서버의 명령행 인자 설정 가능 여부
  • Option file
    MySQL 설정 파일인 my.cnf(my.ini)로 제어 가능 여부
  • System Var
    시스템 변수 여부
  • Var Scope
    시스템 변수 적용 범위
  • Dynamic
    시스템 변수가 동적인지 정적인지 구분

2.4.3 글로벌 변수와 세션 변수

글로벌 범위 시스템 변수

  • 하나의 MySQL 서버 인스턴스 전체에 영향을 미치는 시스템 변수로, 주로 서버 자체에 관련된 설정
  • InnoDB 버퍼 풀 크기 (innodb_buffer_pool_size), MyISAM 캐시 크기(key_buffer_size) 등

세션 범위 시스템 변수

  • MySQL 클라이언트가 MySQL 서버에 접속할 때 기본으로 부여하는 옵션의 기본값 제어 시 사용
  • 클라이언트의 필요에 따하 개별 커넥션 단위로 다른 값으로 변경 가능
  • 한번 연결된 커넥션의 세션 변수는 서버에서 강제로 변경할 수 없음
  • autocommit 등

Both 범위 시스템 변수

  • MySQL 서버가 기억만 하고 있다가 실제 클라이언트와 커넥션이 생성되는 순간 해당 커넥션의 기본으로 사용되는 값
  • 커넥션이 만들어지는 순간부터 해당 커넥션에서만 유효한 설정 변수

2.4.4 정적 변수와 동적 변수

MySQL 서버가 기동 중인 상태에서 변경 가능 여부에 따라 동적 변수와 정적 변수로 구분함

2.4.5 SET PERSIST

동적 변수의 경우 MySQL 서버에서 SET GLOBAL 명령으로 변경 시 즉시 서버에 반영하지만 설정 파일에 변경 내용을 따로 적용이 필요함

SET PERSIST 명령으로 시스템 변수를 변경하면 MySQL 서버는 변경된 값을 즉시 적용 및 설정 파일(mysqld-auto.cnf)에 변경 내용을 추가로 기록 후 재시작시 시스템 변수 적용

SET PERSIST 명령은 세션 변수에 적용되지 않며 MySQL 서버는 자동으로 GLOBAL 시스템 변수의 변경으로 인식 및 변경

현재 실행 중인 서버에 적용하지 않고 재시작 시 변경을 원하는 경우 및 정적 변수의 값을 영구적으로 변경하고자 하는 경우 SET PERSIST_ONLY 명령 사용

profile
백엔드 개발자

0개의 댓글