15 유용한 MySQL / MariaDB 성능 조정 및 최적화 팁


MySQL은 강력한 오픈 소스 관계형 데이터베이스 관리 시스템 또는 짧은 RDBMS입니다. "1995 년 (20 년)에 다시 출시되었습니다. "데이터베이스 내에서 콘텐츠를 관리하는 데 가장 많이 사용되는 구조적 쿼리 언어를 사용합니다. "최신 MySQL 버전은 5.6.25이며 2015 년 5 월 29 일에 출시되었습니다.

MySQL에 대한 흥미로운 사실은 이름이 Michael Widenius (MySQL의 제작자)의 딸인 My에서 유래되었다는 사실입니다. MySQL에 대한 흥미로운 사실이 많이 있지만이 기사는 MySQL 서버를 관리하는 데 도움이되는 몇 가지 유용한 사례를 보여주기위한 것입니다.

2009 년 4 월 MySQL 프로젝트는 오라클에 인수되었습니다. "그 결과 MariaDB라는 MySQL 커뮤니티 포크가 생성되었습니다. "포크를 만든 주된 이유는 General Public License에 따라 프로젝트를 무료로 유지하기 위해서였습니다.

오늘날 MySQL과 MariaDB는 WordPress, Joomla, Magento 등과 같은 웹 애플리케이션에 가장 많이 사용되는 RDBMS 중 하나입니다.

이 기사에서는 MySQL/MariaDB의 성능을 미세 조정하는 방법을 최적화하는 방법에 대한 몇 가지 기본적이지만 유용한 팁을 보여줍니다. 이 기사에서는 이미 MySQL 또는 MariaDB가 설치되어 있다고 가정합니다. 시스템에 설치하는 방법이 여전히 궁금하다면 여기에서 광범위한 가이드를 따를 수 있습니다.

  1. Installing LAMP on RHEL/CentOS 7
  2. Installing LAMP on Fedora 22
  3. Setting Up LAMP on Ubuntu 15.04
  4. Installing MariaDB on Debian 8
  5. Install MariaDB on Gentoo Linux
  6. Install MariaDB on Arch Linux

중요 : 시작하기 전에이 제안을 맹목적으로 받아들이지 마십시오. 각 MySQL 설정은 고유하며 변경하기 전에 추가 생각이 필요합니다.

알아야 할 사항 :

  1. MySQL/MariaDB configuration file is located in /etc/my.cnf. Every time you modify this file you will need to restart the MySQL service so the new changes can take effect.
  2. For writing this article MySQL version 5.6 has been used as template.

1. 테이블 당 InnoDB 파일 활성화

먼저 InnoDB가 스토리지 엔진이라는 것을 설명하는 것이 중요합니다. MySQL 및 MariaDB는 InnoDB를 기본 스토리지 엔진으로 사용합니다. 과거에 MySQL은 데이터베이스 테이블과 인덱스를 시스템 테이블 스페이스에 보관하는 데 사용되었습니다. 이 접근 방식은 데이터베이스 처리만을 목적으로하는 서버를위한 것이며 해당 스토리지 디스크는 다른 용도로 사용되지 않습니다.

InnoDB는보다 유연한 접근 방식을 제공하며 각 데이터베이스 정보는 .ibd 데이터 파일에 보관됩니다. "각 .ibd 파일은 자체 테이블 스페이스를 나타냅니다. "이렇게하면 \"TRUNCATE\"와 같은 데이터베이스 작업을 더 빨리 완료 할 수 있으며 데이터베이스 테이블을 삭제하거나자를 때 사용하지 않는 공간을 회수 할 수도 있습니다.

이 구성의 또 다른 이점은 일부 데이터베이스 테이블을 별도의 저장 장치에 보관할 수 있다는 것입니다. 이는 디스크의 I/O로드를 크게 향상시킬 수 있습니다.

innodb_file_per_table은 MySQL 5.6 이상에서 기본적으로 활성화됩니다. /etc/my.cnf 파일에서 확인할 수 있습니다. "지시문은 다음과 같습니다.

innodb_file_per_table=1

2. MySQL 데이터베이스 데이터를 별도의 파티션에 저장

참고 :이 설정은 MySQL에서만 작동하고 MariaDB에서는 작동하지 않습니다.

때로는 OS 읽기/쓰기로 인해 MySQL 서버의 성능이 저하 될 수 있습니다. 특히 동일한 하드 드라이브에있는 경우 더욱 그렇습니다. 대신 MySQL 서비스에 별도의 하드 드라이브 (가급적 SSD)를 사용하는 것이 좋습니다.

완료하려면 새 드라이브를 컴퓨터/서버에 연결해야합니다. 이 기사에서는 드라이브가/dev/sdb에 있다고 가정합니다.

다음 단계는 새 드라이브를 준비하는 것입니다.

# fdisk /dev/sdb

이제 "n"을 눌러 새 파티션을 만듭니다. 다음으로“p”를 눌러 새 파티션을 주 파티션으로 만듭니다. "그 후 파티션 번호를 1-4로 설정하십시오. 그 후에 파티션 크기를 선택합니다. "여기에서 Enter를 누르십시오. "다음 단계에서 파티션의 크기를 구성해야합니다.

전체 디스크를 사용하려면 Enter 키를 한 번 더 누르십시오. 그렇지 않으면 새 파티션의 크기를 수동으로 설정할 수 있습니다. 준비가되면 \"w\"를 눌러 변경 사항을 기록합니다. 이제 새 파티션을위한 파일 시스템을 만들어야합니다. 다음과 같이 쉽게 수행 할 수 있습니다.

# mkfs.ext4 /dev/sdb1

이제 새 파티션을 폴더에 마운트합니다. 내 폴더 이름을 \"ssd\"로 지정하고 루트 디렉토리에 생성했습니다.

# mkdir /ssd/

방금 만든 새 파티션을 새 폴더에 마운트 할 준비가되었습니다.

# mount /dev/sdb1  /ssd/

/ etc/fstab 파일에 다음 행을 추가하여 시작시 마운트를 수행 할 수 있습니다.

/dev/sdb1 /ssd ext3 defaults 0 0

이제 MySQL을 새 디스크로 이동할 준비가되었습니다. 먼저 다음을 사용하여 MySQL 서비스를 중지합니다.

# service mysqld stop

데이터베이스에 쓰기 시도를 방지하기 위해 Apache/nginx도 중지하는 것이 좋습니다.

# service httpd stop
# service nginx stop

이제 새 드라이브에 전체 MySQL 디렉토리를 복사합니다.

# cp /var/lib/mysql /ssd/ -Rp

MySQL 데이터베이스의 사이트에 따라 다소 시간이 걸릴 수 있습니다. "이 프로세스가 완료되면 MySQL 디렉토리의 이름을 바꿉니다.

# mv /var/lib/mysql /var/lib/mysql-backup

다음으로 심볼릭 링크를 생성합니다.

# ln -s /ssd/mysql /var/lib/mysql

이제 MySQL 및 웹 서비스를 시작할 준비가되었습니다.

# service mysqld start
# service httpd start
# service nginx start

이 시점에서 MySQL 데이터베이스는 새 드라이브에서 액세스됩니다.