Last Updated on 12월 27, 2023 by Jade(정현호)
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
설치 확인
mysql> 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 하지 않은 시간대에 한번 수행해보시면 아주 다양한 진단 결과를 보실 수 있을 것입니다
다른 연관된 글
Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io