MySQL은 강력한 오픈 소스 관계형 데이터 관리 시스템 또는 简称 RDBMS입니다. 1995년에 발표되었으며 (20년 지난 것입니다). 이를 관리하기 위해서는 가장 인기 있는 선택입니다. 구조화된 쿼리 언어를 사용하며 가장 최신 버전은 5.6.25이며 2015년 5월 29일에 발표되었습니다.
Michael Widenius의 (MySQL 창의자) 딸 My에서 이름이 생기는 사실이 MySQL에 대한 재미있는 사실입니다. 이러한 사실들 중 하나로 MySQL은 阀谋取제 기반의 자유 시스템을 유지하기 위해 커뮤니티 분기를 하기 시작했습니다.

2009년 4월에 MySQL 프로젝트는 Oracle에 의해 acqui-hire되었습니다. 그 결과 MySQL 커뮤니티 분기로 MariaDB가 생성되었습니다. 분기를 하는 주요 이유는 프로젝트가 General Public License에 따라 자유로울 수 있게 유지하기 위함입니다.
오늘날 MySQL과 MariaDB는 (가장 많이 사용되고 있다고 하자면) 웹 应用程序에서 RDBMS로 가장 자주 사용되는 것입니다.
이 記事에서는 MySQL/MariaDB 서버를 관리하는 데 유용한 기술을 몇 가지 소개할 것입니다. 이 記事에서는 MySQL 또는 MariaDB를 이미 설치한 상태라고 가정합니다. still have no idea how to install them on your system, you can follow our comprehensive guides here:
- RHEL/CentOS 7에 LAMP 설치
- Fedora 22에 LAMP 설치
- Ubuntu 15.04에 LAMP 세팅
- Debian 8에 MariaDB 설치
- Gentoo Linux에 MariaDB 설치
- Arch Linux에 MariaDB 설치
중요: 시작하기 전에 – 이 팁을 盲目으로 수락하지 마십시오. 모든 MySQL 세팅은 unique하며, 변경 사항을 하기 전에 추가적인 생각이 필요합니다.
알아야 하는 것:
- MySQL/MariaDB 구성 파일은
/etc/my.cnf
에 위치합니다. 이 파일을 수정할 때마다, MySQL 서비스를 다시 시작해야 새 변경사항이 적용됩니다. - 이 記事 쓰기 위해 MySQL 버전 5.6이 emplate로 사용되었습니다.
1. InnoDB Each Table per File 사용을 가능하게 만듭니다.
먼저 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에서는 작동하지 않습니다.
가끔 운영 체제의 읽기/쓰기가 MySQL 서버의 성능을 떨어뜨릴 수 있습니다. 특히 같은 하드 드라이브에 있는 경우입니다. 대신 MySQL 서비스에 별도의 하드 드라이브(가능하면 SSD)를 사용하는 것을 권장합니다.
이를 완료하려면 새 드라이브를 컴퓨터/서버에 연결해야 합니다. 이 기사에서는 드라이브가 /dev/sdb에 있을 것으로 가정하겠습니다.
다음 단계는 새 드라이브를 준비하는 것입니다:
# fdisk /dev/sdb
이제 “n”을 눌러 새로운 파티션을 만드십시오. 다음으로 “p”를 눌러 새 파티션을 주(primary)로 설정하십시오. 그 후 파티션 번호를 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
I would recommend you stopping Apache/nginx as well to prevent any attempts to write in the databases:
# 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 데이터베이스는 새 드라이브에서 액세스됩니다.
Source:
https://www.tecmint.com/mysql-mariadb-performance-tuning-and-optimization/