[MySQL] 서버 자동 환경 설정(MySQL 8.0)

서버 자동 설정 변수(파라미터)

MySQL 8.0에는 서버 메모리 환경을 자동으로 설정해주는 파라미터가 있습니다. 이 파라미터에 대해 한번 알아보겠습니다.

 

▶︎ 변수 확인

먼저 서버 변수에 대해 알아보겠습니다.

변수명 : innodb_dedicated_server

명령라인 형식 --innodb-dedicated-server[={OFF|ON}]
시스템 변수 innodb_dedicated_server
범위 전역
동적여부 아니오
SET_VAR 힌트 적용 아니오
형식 Boolean(, 거짓)
기본값 OFF

 

 

▶︎ 자동 설정 변수

innodb_dedicated_server 활성화되면 InnoDB 자동으로 다음 변수를 구성합니다.

innodb_buffer_pool_size

innodb_redo_log_capacity 또는 MySQL 8.0.30 이전에는 innodb_log_file_size innodb_log_files_in_group.

innodb_flush_method

참고로 innodb_log_file_size innodb_log_files_in_group MySQL 8.0.30에서 이상 사용되지 않습니다. 이러한 변수는 innodb_redo_log_capacity 변수로 대체됩니다.

 

MySQL 인스턴스가 사용 가능한 모든 시스템 리소스를 사용할 있는 전용 서버(Docker VM같은 가상환경 포함) 상주하는 경우에만 innodb_dedicated_server 활성화를 고려해야 합니다.

MySQL 인스턴스가 다른 애플리케이션과 시스템 리소스를 공유하는 경우 시스템 자원을 MySQL 많이 가져가게 되거나 반대로 다른 애플리케이션에서 시스템자원을 가져갈 수도 있습니다. 이때 메모리 관리에서 충돌이 발생하거나 부족 현상이 나타나여 시스템 성능에 영향을 받을 있습니다.

 

 

▶︎ 다음 정보는 변수가 자동으로 구성되는 방법을 설명합니다.

innodb_buffer_pool_size

  버퍼 크기는 서버에서 감지된 메모리 양에 따라 구성됩니다.

 

. 자동으로 구성된 버퍼 크기

감지된 서버 메모리 버퍼 크기
1기가 미만 128MB (기본값)
1GB ~ 4GB 감지 서버 메모리 * 0.5
4GB 이상 감지된 서버 메모리 * 0.75

 

innodb_redo_log_capacity

Redo 로그 용량은 서버에서 감지된 메모리 양과 경우에 따라 innodb_buffer_pool_size 명시적으로 구성되었는지 여부에 따라 구성됩니다. innodb_buffer_pool_size 명시적으로 구성되지 않은 경우 기본값이 가정됩니다.

참고 : 자동 리두 로그 용량 구성 동작은 innodb_buffer_pool_size 감지된 서버 메모리 양보다 값으로 설정된 경우 정의되지 않습니다.

 

. 자동으로 구성된 로그 파일 크기

감지된 서버 메모리 버퍼 크기 Redo 로그 용량
1GB 미만 구성되지 않음 100MB
1GB 미만 1GB 미만 100MB
1GB ~ 2GB 해당 없음 100MB
2GB ~ 4GB 구성되지 않음 1GB
2GB ~ 4GB   Any configured value
임의의 구성된
round(0.5 * 감지된 서버 메모리(GB)) * .5GB
round : 반올림
4GB ~ 10.66GB 해당 없음 round(0.75 * 감지된 서버 메모리(GB)) * 0.5GB
10.66GB~170.66GB 해당 없음 round(0.5625 * 감지된 서버 메모리(GB)) * 0.5GB
170.66GB 이상  해당 없음 128GB

 

 

innodb_log_file_size(MySQL 8.0.30에서 이상 사용되지 않음)

로그 파일 크기는 자동으로 구성된 버퍼 크기에 따라 구성됩니다.

 

. 자동으로 구성된 로그 파일 크기

버퍼 크기 로그 파일 크기
8GB 미만 512MB
8GB~128GB 1024MB
128GB 이상 2048MB

 

innodb_log_files_in_group(MySQL 8.0.30에서 이상 사용되지 않음)

로그 파일의 수는 자동으로 구성된 버퍼 크기에 따라 구성됩니다. innodb_log_files_in_group 변수의 자동 구성이 MySQL 8.0.14 추가되었습니다.

 

. 자동으로 구성된 로그 파일

버퍼 크기 로그 파일
8GB 미만 round(버퍼 크기)
8GB ~ 128GB round(버퍼 크기 * 0.75)
128GB 이상 64

 

메모

반올림된 버퍼 크기 값이 2GB 미만인 경우 최소 innodb_log_files_in_group 2 적용됩니다.

 

innodb_flush_method

플러시 방법은 innodb_dedicated_server 활성화된 경우 O_DIRECT_NO_FSYNC 설정됩니다.

O_DIRECT_NO_FSYNC 설정을 사용할 없는 경우 기본 innodb_flush_method 설정이 사용됩니다.

InnoDB I/O 플러시하는 동안 O_DIRECT 사용하지만 쓰기 작업 후에 fsync() 시스템 호출을 건너뜁니다.

 

참고

1. MySQL 8.0.14 이전 버전에서는 설정이 파일 시스템 메타데이터 변경 사항을 동기화하기 위해 fsync() 시스템 호출이 필요한 XFS EXT4 같은 파일 시스템에 적합하지 않습니다.

2. MySQL 8.0.14부터 fsync() 파일을 만든 , 파일 크기를 늘린 , 파일을 닫은 파일 시스템 메타데이터 변경 사항이 동기화되도록 하기 위해 호출됩니다. fsync() 시스템 호출은 쓰기 작업 후에 여전히 건너뜁니다.

3. 리두 로그 파일과 데이터 파일이 서로 다른 저장 장치에 있는 경우 데이터 손실이 발생할 있으며 데이터 파일 쓰기가 배터리 지원되지 않는 장치 캐시에서 플러시되기 전에 예기치 않은 종료가 발생합니다. 리두 로그 파일과 데이터 파일에 대해 다른 저장 장치를 사용하거나 사용하려는 경우 데이터 파일이 배터리 지원되지 않는 캐시가 있는 장치에 상주하는 경우 대신 O_DIRECT 사용하십시오.

 

▶︎ 마무리

자동으로 구성된 옵션이 옵션 파일이나 다른 곳에서 명시적으로 구성된 경우 명시적으로 지정된 설정이 사용되며 다음과 유사한 시작 경고가 stderr 인쇄됩니다.

[Warning] [000000] InnoDB: Option innodb_dedicated_server is ignored for innodb_buffer_pool_size because innodb_buffer_pool_size=134217728 is specified explicitly.

옵션의 명시적 구성은 다른 옵션의 자동 구성을 방해하지 않습니다.

innodb_dedicated_server 활성화되고 innodb_buffer_pool_size 명시적으로 구성된 경우 버퍼 크기를 기준으로 구성된 변수는 명시적으로 정의된 버퍼 크기 값이 아닌 서버에서 감지된 메모리 양에 따라 계산된 버퍼 크기 값을 사용합니다.

 

자동으로 구성된 설정은 MySQL 서버가 시작될 때마다 평가되고 필요한 경우 재구성됩니다.

 

참고페이지

https://dev.mysql.com/doc/refman/8.0/en/innodb-dedicated-server.html

Designed by JB FACTORY