[Ubuntu] MySQL 8 메모리 줄이기

[Ubuntu] MySQL 8 메모리 줄이기
Photo by Rubaitul Azad / Unsplash

사용환경

  • OS : Ubuntu 22.04 LTS (Jammy Jellyfish)
  • DB : MySQL 8.0.34

A. 작업이유

현재 iwinv를 통해서 아주 작은 사이즈의 가상서버를 임대해서 사용하다보니 메모리가 1 GB뿐이다. 문제는 DB인 MySQL을 올려야하고 NodeJS로 구동되는 ghost 블로그까지 올리려니 서비스를 다 올리고나면 가용메모리가 너무 적다(대략 80MB 정도...)

매주 OS 업데이트 작업을 진행하는데 가용메모리가 적다보니 OS 업데이트 (apt update && apt upgrade)하다가 서버가 Out of Memory로 Hang이 걸리는 문제가 있어서 매번 ghost 서비스를 내려놓고 작업을 하고 있었다.

거기에 이번에 ghost 업그레이드를 진행하려고 하니 가용메모리가 부족하다면서 업그레이드가 막히는 문제까지... 결국 MySQL이 사용하는 메모리를 좀 회수해야겠다는 생각이 들었다.(애초에 가상서버의 등급을 1단계 올린 것도 MySQL 돌리려고...)

B. 작업

구글링을 통해서 몇 개의 문서들을 검토해보니, 대부분은 성능이슈로 나와는 다르게 MySQL이 사용하는 메모리를 늘리는 경우였다. 그래도 나처럼 MySQL이 사용하는 메모리를 줄이려는 사람이 있어서 해당 문서를 토대로 작업을 진행했다.

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

위 설정파일을 열어서 제일 하단에 아래의 내용을 넣었다.

performance_schema = off
innodb_buffer_pool_size = 100M
max_connections = 10
max_user_connections = 5

그 뒤에는 MySQL 서버를 재기동!

$ sudo systemctl restart mysql.service

원래는 참고문서에 있는 설정을 그대로 했더니... MySQL 서버가 올라가면서 죽어버려서 딱 필요해보이는 설정만 골랐다. 그랬더니 정상적으로 기동완료!

C. 점검

작업 후 free 명령어로 가용한 메모리 확인을 해보면...

$ free -m
               total        used        free      shared  buff/cache   available
Mem:             957         437         304           1         215         368
Swap:              0           0           0
$

free 메모리가 96 -> 304로 대폭 상승!(시간이 지나면서 조금씩 줄긴함...) (나중에 다시 읽어보니 free만 볼게 아니라 buff/cache 값도 같이 봤어야하는데... 포스팅 완료하고 기존 콘솔데이터가 남지 않아서 알 수가 없다... 그래도 유의미하게 MySQL 메모리 사용율이 떨어진 것은 사실이니.. 대충 넘어간다;;)

그래도 가용한 메모리가 10% 정도였다가 31.7%로 늘어났으니 아마 숨통이 트일 것 같다.

MySQL 메모리를 회수하고나서 ghost를 사용해봤는데 아직까진 특별히 느리다거나 하는 느낌을 들진 않는다.

D. 참고문서

  1. [MySql] mysql 사용 메모리 줄이기, 코드루덴스, codens, 2019/09/23