Real MySql 8.0 2장: 설치와 설정

Adam·2024년 10월 7일
0

Real MySql

목록 보기
2/4
post-thumbnail

MySql 서버 업그레이드

업그레이드 하는 두가지 방법

1. 인플레이스 업그레이드

MySql 서버의 데이터 파일을 그래도 두고 업그레이드

여러가지 제약이 있지만 시간이 단축

제약사항

메이저 버전 간 업그레이드는 대부분 크고 작은 데이터 파일의 변경이 필요하기 때문에 반드시 직전 버전에서만 업그레이드가 허용

MySql 5.1 → 8.0 업그레이드 시 5.1 → 5.5 → 5.6 → 5.7 → 8.0 여러번 업데이트 해야 한다

메이저 버전 업그레이드가 특정 마이너 버전에서만 가능한 경우가 있다

2. 논리적 업그레이드

mysqldump 도구 등을 이용해 MySql 서버의 데이터를 Sql 문장이나 텍스트 파일로 덤프한 후, 새로 업그레이드된 버전의 Mysql 서버에 덤프된 데이터를 적재하는 방법

제약이 없지만 업그레이드 시간이 많이 소요될 수 있다

MySql 8.0 업그레이드 시 고려 사항

  1. 사용자 인증 방식 변경: 8.0에서는 Caching SHA-2 Authentication 인증 방식이 기본 인증 방식으로 변경
  2. MySql 8.0과의 호환성 체크
  3. 외래키 이름의 길이: MySql 8.0에서 외래키의 이름이 64글자로 제한
  4. 인덱스 힌트: 인덱스 힌트가 MySql8.0에서 성능 저하를 일으킬 수 있으니 테스트를 먼저 해보는 것이 좋다
  5. Group By 사용된 정렬 옵션: Group By 절의 칼럼 뒤에 ASC, DESC를 사용하고 있다면 제거하거나 다른 방식으로 변경
  6. 파티션을 위한 공용 테이블스페이스: MySql 8.x에서는 파티션의 각 테이블 스페이스를 공용 테이블스페이스에 저장 할 수 없다

MySql 8.0 업그레이드

MySql 8.0으로 업그레이드는 복잡하다

MySql 8.0부터는 시스템 테이블의 정보와 데이터 딕셔너리 정보의 포맷이 완전히 바뀜

MySql 7.7 → 8.0 업그레이드 단계

  1. 데이터 딕셔너리 업그레이드: 기존 딕셔너리 정보가 FRM 확장자를 사용했는데 이를 변경 된 InnoDB 테이블로 저장
  2. 서버 업그레이드: MySql 서버의 시스템 데이터베이스의 테이블 구조를 MySql 8.0에 맞게 변경

MySql 5.7 → MySql 8.0.16 이후 버전으로 업그레이드 순서

  1. MySql 셧다운
  2. MySql 5.7 프로그램 삭제
  3. MySql 8.0 프로그램 설치
  4. MySql 8.0 서버 시작(딕셔너리 업그레이드 실행 후, 시스템 테이블 구조를 MySql 8.0에 맞게 변환)

서버 설정

일반적으로 MySql 서버는 my.cnf라는 단 하나의 설정 파일을 사용

서버가 시작 될 때만 이 파일을 참조하지만 이 설정 파일의 경로가 고정 돼 있는 것은 아니다

mysqld --verbose --help

위 커맨드로 my.cnf가 위치한 경로를 확인할 수 있다

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

MySql 시스템 변수의 특징

시스템 변수: MySql 서버는 기동하면서 설정 파일의 내용을 읽어 메모리나 작동 방식을 초기화하고, 접속된 사용자를 제어하기 위해 이러한 값을 별도의 값

아래 커멘드로 시스템 변수를 확인 가능

SHOW GLOBAL VARIABLES;

글로벌 변수와 세션 변수

글로벌 변수

  • 하나의 MySql 서버 인스턴스에서 전체적으로 영향을 미치는 변수, 주로 MySql 서버 자체에 관련된 설정

세션변수

  • MySql 클라이언트가 MySql 서버에 접속할 떄 기본으로 부여하는 옵션의 기본값을 제어하는 데 사용
  • 클라이언트가 처음에 접속하면 기본적으로 부여하는 기본값이 있음

정적 변수와 동적 변수

서버 기동 중인 상태에서 변경 가능한지에 따라 동적 변수와 정적 변수로 구분

디스크에 저장된 설정 파일의 내용은 변경하더라도 MySql 서버가 재시작하기 전에는 적용되지 않는다.

SET 명령어를 통해 변숫값을 변경할 수 있지만 설정 파일이 변경되는 것은 아니기 때문에 현재 기동 중인 MySql 인스턴스에서만 유효하고, 재기동 되어도 적용이 되려면 설정파일을 변경해 주어야 한다

SET PERSIST

SET PERSIST 명령으로 시스템 변수를 변경하면 MySql 서버는 변경된 값을 즉시 적용함과 동시에 별도의 설정 파일에 변경 내용을 추가로 기록해 두고 재기동 시 같이 참조를 하여, 설정 파일에 해당 내용을 기록하지 않아도 자동으로 영구히 변경된다

SET PERSIST 명령은 세션 변수에는 적용이 되지 않고, 시스템 변수를 변경하면 자동으로 GLOBAL 시스템 변수의 변경으로 인식하고 변경한다

변경을 롤백하려면 RESET PERSIST 명령어로 롤백하는 것이 안전하다

my.cnf 파일

MySql 서버를 제대로 사용하려면 시스템 변수에 대한 이해가 상당히 많이 필요하다

profile
Keep going하는 개발자

0개의 댓글