2. DBMS이야기/02. MySQL

MySQL에서 mysqlslap을 활용하여 쿼리 성능을 측정하는 방법 (1) 테스트환경 셋팅

OSSW(Open Source System SoftWare 2014. 11. 19. 16:58

MySQL은 버전 5.1.4부터 주변에있어 쉽고 간단한 진단 도구로 mysqlslap와 함께 제공됩니다. 그것은 DBA와 개발자가 데이터베이스 서버로드 테스트 할 수 있는 벤치마킹 도구입니다.


mysqlslap 동시에 데이터베이스 서버를 타격하는 다수의 클라이언트 연결을 에뮬레이트 할 수있습니다. 부하 테스트 매개 변수를 완벽하게 구성 할 수있는 다른 테스트 실행의 결과는 미세 조정 데이터베이스 설계 나 하드웨어 자원을 사용할 수 있습니다.


이 튜토리얼에서 우리는 몇 가지 기본적인 쿼리와 MySQL 데이터베이스로드 테스트 및 벤치마킹이 그 쿼리 우리에게 미세 조정을 할 수있는 방법을 볼 수 mysqlslap를 사용하는 방법을 배우게됩니다. 몇 가지 기본적인 시위 후, 우리는, 우리가 테스트를 위해 기존 데이터베이스의 사본을 작성 상당히 현실적인 테스트 시나리오를 실행하는 로그에서 쿼리를 주울 및 스크립트의 테스트를 실행합니다.


이 튜토리얼에 표시된 명령, 패키지 및 파일은 개념이 다른 배포판에 대해 동일하게 유지를 CentOS 7에서 테스트되었습니다.


"서버 사이즈를 어떻게 설정해야 할까"

특정 데이터베이스 서버를 벤치마킹에 관심이 있다면, 당신은 같은 사양 및 설치 데이터베이스의 정확한 사본이있는 서버에서 테스트해야합니다.


당신이 학습 목적으로이 튜토리얼을 통해 실행하고있는 모든 명령을 실행하려면, 우리는 적어도 2GB의 물방울을 추천합니다. 이 튜토리얼의 명령이 서버 세금을 부과하기위한 것입니다, 당신은 작은 서버에서 시간 초과 것을 알 수 있습니다.


이 튜토리얼의 샘플 출력은 교육에 대한 예제를 최적화하기 위해 다양한 방법으로 제작 하였습니다.


1) MySQL 커뮤니티 서버에 테스트 시스템으로 인스톨링.

우리는 테스트 데이터베이스에서 MySQL 커뮤니티 서버의 신선한 복사본을 설치하여 시작합니다. 당신은 프로덕션 데이터베이스 서버에서이 튜토리얼에서 어떤 명령이나 쿼리를 실행하면 안됩니다.

이 테스트는 테스트 서버를 강조하기위한 것입니다 및 프로덕션 서버에서 지연 또는 중단의 원인이 될 수 있습니다. 이 튜토리얼은 다음과 같은 환경에서 테스트되었다 :

  • CentOS 7
  • sudo user 에 의해 실행
  • 2 GB Droplet 권장: 이 튜토리얼에 표시된 벤치 마크 결과는 교육 목적으로 생산 된 것을 명심하고 특정 디지털 오션 벤치 마크를 반영하지 않습니다

첫째, 우리는이 튜토리얼에 관련된 모든 파일을 보관하는 디렉토리를 작성합니다. 이 단정하게 유지하는 데 도움이됩니다. 이 디렉토리로 이동합니다


sudo mkdir /mysqlslap_tutorial
cd /mysqlslap_tutorial
다음으로, 우리는 MySQL의 커뮤니티 릴리스 얌 저장소를 다운로드합니다. 우리가 다운로드하는 저장소를 CentOS 7 작동 레드햇 엔터프라이즈 리눅스 (7)입니다 :
sudo wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
다음으로는 저장소를 설치하는 명령 -Uvh RPM을 실행할 수 있습니다 :


sudo rpm -Uvh mysql-community-release-el7-5.noarch.rpm
저장소가 /etc/yum.repos.d 폴더의 내용을보고 설치되어 있는지 확인합니다 :


sudo ls -l /etc/yum.repos.d
출력은 다음과 같아야합니다 :
-rw-r--r--. 1 root root 1612 Jul  4 21:00 CentOS-Base.repo
-rw-r--r--. 1 root root  640 Jul  4 21:00 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 1331 Jul  4 21:00 CentOS-Sources.repo
-rw-r--r--. 1 root root  156 Jul  4 21:00 CentOS-Vault.repo
-rw-r--r--. 1 root root 1209 Jan 29  2014 mysql-community.repo
-rw-r--r--. 1 root root 1060 Jan 29  2014 mysql-community-source.repo

우리는 또한 올바른 MySQL의 릴리스 설치에 사용할 수 있는지 확인할 수 있습니다 :

sudo yum repolist enabled | grep mysql

우리의 경우, MySQL은 5.6 커뮤니티 서버는 우리가 원하는 것입니다 :


mysql-connectors-community/x86_64       MySQL Connectors Community           10
mysql-tools-community/x86_64            MySQL Tools Community                 6
mysql56-community/x86_64                MySQL 5.6 Community Server           64

MySQL의 커뮤니티 서버를 설치합니다 :

sudo yum install mysql-community-server
프로세스가 완료되면, 이제 intalled 구성 요소를 확인하자 :
sudo yum list installed | grep mysql
목록은 다음과 같이 보일 것입니다 :
mysql-community-client.x86_64      5.6.20-4.el7      @mysql56-community
mysql-community-common.x86_64      5.6.20-4.el7      @mysql56-community
mysql-community-libs.x86_64        5.6.20-4.el7      @mysql56-community
mysql-community-release.noarch     el7-5             installed
mysql-community-server.x86_64      5.6.20-4.el7      @mysql56-community

다음으로 우리는 MySQL의 데몬이 실행 때 자동으로 서버가 부팅을 시작하고 있는지 확인해야합니다.mysqld를 데몬의 상태를 확인합니다.


sudo systemctl status mysqld.service
중지되어 있다면,이 출력을 보여줍니다 :


mysqld.service - MySQL Community Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled)
   Active: inactive (dead)

서비스를 시작합니다 :


sudo systemctl start mysqld.service
이 부팅시 자동으로 시작되도록 구성되어 있는지 확인합니다 :
sudo systemctl enable mysqld.service
마지막으로, 우리는 MySQL을 확보해야한다 :
sudo mysql_secure_installation
이 일련의 프롬프트를 가져올 것이다. 우리는 당신이 빨간색으로 입력해야 답변을 아래의 지시를 보여줄 것이다. 초기에, 그래서 그냥 Enter를 누르십시오, MySQL의 루트 사용자에 대한 암호가 없습니다.

프롬프트에서 당신은 당신이 자신을 선택해야 새로운 보안 루트 암호를 제공해야합니다. 당신은, 권한 테이블을 다시로드, 등, 익명의 데이터베이스 사용자 계정을 제거 원격 루트 로그인을 사용하지 y로 대답합니다 :
...
Enter current password for root (enter for none):
OK, successfully used password, moving on...
...
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
...
Remove anonymous users? [Y/n] y
 ... Success!
...
Disallow root login remotely? [Y/n] y
 ... Success!
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
...
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...

우리는 지금 데이터베이스에 연결하고 있는지 모든 것이 작동을 할 수 있습니다 :

sudo mysql -h localhost -u root -p
당신이 프롬프트에서 설정 한 MySQL의 root 암호를 입력합니다. 다음과 같은 출력을 볼 수있을 것이다 :


Enter password:
Welcome to the MySQL monitor....

mysql>

mysql> promp에서 모든 데이터베이스를 보려면 명령을 입력합니다 :

show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

마지막으로, 이제 시스템 관리자라는 사용자 계정을 만들 수 있습니다. 이 계정은 MySQL을 대신 루트 사용자로 로그인하는 데 사용됩니다. 이 사용자에 대한 자신의 암호 mypassword 교체해야합니다. 우리는 또한이 계정에 모든 권한을 부여합니다.MySQL의 프롬프트에서 다음 명령을 입력 :

create user sysadmin identified by 'mypassword';

Output:

Query OK, 0 rows affected (0.00 sec)

Grant the privileges:

grant all on *.* to sysadmin;

Output:

Query OK, 0 rows affected (0.01 sec)
지금 다시 운영 체제 프롬프트에 갑시다 :


quit;
Bye


BY LEE JI EUN