MySQLTuner - MySQL 성능(튜닝) 진단 툴 - 성능 및 구성 최적화

Last Updated on 6월 3, 2021 by 태랑(정현호)

MySQLTuner


MySQLTuner는 MySQL 구성을 지원하고 성능 및 안정성 향상을 위한 권장 사항을 제공하는 Perl로 작성된 스크립트입니다.

현재 구성 변수 및 상태 데이터가 검색되어 몇 가지 기본 성능 제안과 함께 간단한 형식으로 표시됩니다.

MySQLTuner 는 MySQL / MariaDB / Percona Server에 대해 300 여개의 지표를 지원합니다.



MySQLTuner는 유지되고 지표 수집은 Galera Cluster, TokuDB, 성능 스키마, Linux OS 메트릭, InnoDB, MyISAM, Aria 등과 같은 많은 구성을 지원하는 매주 증가하고 있습니다




호환되는 버전 및 필요 한 패키지


호환성 목록

  • MySQL 8 (partial support, password checks don't work)

  • MySQL 5.7 (full support)

  • MySQL 5.6 (full support)

  • MySQL 5.5 (full support, no more MySQL support)

  • MariaDB 10.5 (partial support)

  • MariaDB 10.4 (full support)

  • MariaDB 10.3 (full support)

  • MariaDB 10.2 (full support)

  • MariaDB 10.1 (full support)

  • MariaDB 10.0 (full support, 6 last month support)

  • MariaDB 5.5 (full support, no more MariaDB support)

  • Percona Server 8.0 (partial support, password checks don't work)

  • Percona Server 5.7 (full support)

  • Percona Server 5.6 (full support)

  • Percona XtraDB cluster (partial support, no test environment)

  • Mysql Replications (partial support, no test environment)

  • Galera replication (partial support, no test environment)

  • MySQL 3.23, 4.0, 4.1, 5.0, 5.1, 5.5 (partial support - deprecated version)


*** UNSUPPORTED ENVIRONMENTS - NEED HELP FOR THAT ***

  • Windows is not supported at this time (Help wanted !!!!!)

  • Cloud based is not supported at this time (Help wanted !!!!!)

  • CVE vulnerabilities detection support from https://cve.mitre.org

  • 윈도우 와 Cloud based 환경은 아직 지원하지 않습니다.
    CVE vulnerabilities 정보는 https://cve.mitre.org 를 통해 지원되고 있습니다.


*** MINIMAL REQUIREMENTS ***

  • Perl 5.6 or later (with perl-doc package)
  • Unix/Linux based operating system (tested on Linux, BSD variants, and Solaris variants)
  • Unrestricted read access to the MySQL server (OS root access recommended for MySQL < 5.1)
  • Perl은 최소 5.6 이상 필요 하며 perl-doc 패키지도 같이 필요 합니다
    Unix/Linux based 환경만 지원 합니다
    Linux,BSD 계열, Solaris 에서 테스트 되었습니다.






Download/Installation


아래 명령어를 통해 다운로드 및 설치를 합니다

wget http://mysqltuner.pl/ -O mysqltuner.pl
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv -O vulnerabilities.csv



# Optional SysSchema installation for MySQL 5.6

MySQL 5.7.7 버전부터 기본포함이며 5.6 버전 부터 별도로 설치가 가능 합니다
5.6 버전을 사용한다면 별도로 SYS Schema 를 설치 해야 합니다.


curl "https://codeload.github.com/mysql/mysql-sys/zip/master" > sysschema.zip
# check zip file
unzip -l sysschema.zip
unzip sysschema.zip
cd mysql-sys-master
mysql -uroot -p < sys_56.sql


-- 설치 확인
select * from sys.version;





MySQLTuner 실행


MySQLTuner 명령어에는 Minimal 과 점검 하고자 하는 항목을 명시적으로 지정하여 분석의 타입을 지정 하여 진행 할 수 있습니다


# Remote 환경의 DB에 대해서 Minimal(최소환) 의 점검
perl mysqltuner.pl --host targetDNS_IP \
--user admin_user --pass admin_password

* 모바일 배려로 명령어는 개행 하였습니다.



#  Minimal(최소환) 의 점검
perl mysqltuner.pl



# 디버깅없이 Maximum(모든) 으로 점검하라는 명령어 입니다.
perl mysqltuner.pl --buffers --dbstat \
--idxstat --sysstat --pfstat --tbstat

* 많은 내용이 출력되기 때문에 output 을 지정해서 파일로 저장해서 봐야 합니다.
* 모바일 배려로 명령어는 개행 하였습니다.


# 점검 결과를 파일로 저장 합니다
--outputfile /tmp/result_mysqltuner.txt


# CVE 보안취약점 점검을 수행 합니다.
--cvefile=vulnerabilities.csv




위의 명령어와 조합하면 아래와 같이 됩니다.
perl mysqltuner.pl --buffers --dbstat \
--idxstat --sysstat --pfstat --tbstat \
--cvefile=vulnerabilities.csv \
--outputfile /tmp/result_mysqltuner.txt

* 모바일 배려로 명령어는 개행 하였습니다.


디버깅 정보를 표시합니다
perl mysqltuner.pl —debug



# mysqltuner.pl 점검 실행

$ perl mysqltuner.pl --buffers --dbstat \
> --idxstat --sysstat --pfstat --tbstat \
> --cvefile=vulnerabilities.csv \
> --outputfile /tmp/result_mysqltuner.txt
>> MySQLTuner 1.7.20 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.pl/
>> Run with '--help' for additional options and output filtering

[--] Skipped version check for MySQLTuner script
Please enter your MySQL administrative login: root
Please enter your MySQL administrative password: [root패스워드]



* 수행결과 예시 이미지 입니다.




[!!] 표시가 되는 부분을 중점적으로 보면 될것 같습니다

Warning Level 정도의 표기 이며 먼저 수정 및 보완이 필요 한 부분이며 가장 아래 하단에 Recommendations 도 참조하시면 됩니다.


실제 운영DB 에서는 Maximum 에 vulnerabilities 체크까지 하였을때 스키마(데이터베이스) 를 포함한 테이블,인덱스 등도 검사하기 하다보니 검사 결과가 11058 라인이 되어 스크린샷은 테스트 DB에서 Minimal 결과로만 예시로 올려드립니다.


실제로 Maximum 으로 수행하면 DB에 있는 테이블과 Index 에 따라 많은 체크 결과가 출력 됩니다
꼭 outputfile 정하여 파일로 저장하고 결과를 봐야 합니다


운영중인 DB에서 예상하지 못한 부분도 점검된 부분이 있어서 테스트 과정에서 상당히 좋은 점을 확인하였습니다



Busy 하지 않은 시간대에 한번 수행해보시면 아주 다양한 진단 결과를 보실 수 있을 것입니다



다른 연관된 글

답글 남기기