이 기사에서는 Linux CentOS 7에서 데이터베이스 서버 MariaDB의 설치, 기본 구성 및 성능 최적화를 고려할 것입니다. 기사 끝에서 MariaDB 구성 파일의 몇 가지 예를 보여주므로 가장 좋은 것을 선택할 수 있습니다. db 서버에 대한 매개변수.
CentOS에 MariaDB 설치
최근에 MariaDB가 표준 CentOS 7 기본 리포지토리에 추가되었지만 리포지토리의 버전은 5.5입니다. 이 버전은 최신 버전이 아니며 일부 성능 문제가 있으며 InnoDB에서 전체 텍스트 검색을 제공하지 않습니다. 현재 버전의 MariaDB를 설치하려면 먼저 mariadb.org 개발자 저장소를 추가해야 합니다.
나노 설치 yum을 사용하는 편집기:
yum install nano -y
그런 다음 편집할 저장소 파일을 엽니다.
nano /etc/yum.repos.d/mariadb.repo
거기에 다음 텍스트를 추가하십시오:
[mariadb]이름 =MariaDBbaseurl =https://yum.mariadb.org/10.4/centos7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1
mariadb.repo 구성 파일을 저장하고 MariaDB 서버와 클라이언트를 설치합니다.
yum --disablerepo=AppStream install MariaDB-server MariaDB-client -y
설치가 완료되었습니다. 이제 시작에 mariadb 서비스를 추가해야 합니다.
systemctl start mariadb
systemctl enable mariadb
서비스 상태 확인:
systemctl status mariadb
mariadb 서비스가 활성화되어 실행 중이므로 구성을 계속할 수 있습니다.
MariaDB 서버 보안
MariaDB 서버를 설치하고 실행한 후 보안 설정으로 이동할 수 있습니다. 내장 스크립트 실행:
/usr/bin/mysql_secure_installation
우선 루트 암호를 입력하라는 메시지가 표시되므로(mariadb의 초기 설치 후 암호가 설정되지 않음) Enter 키를 누르고 다음 단계에서 복잡한 암호를 설정합니다. 그런 다음 시나리오 실행이 끝날 때까지 Enter 키를 누를 수 있습니다. 익명 사용자, 원격 루트 로그인 및 테스트 테이블이 삭제되고 권한이 업데이트됩니다.
mariadb 서버에 원격으로 연결하려면 iptables를 사용하여 Linux 방화벽에 대한 몇 가지 규칙을 만들어야 합니다.
iptables -I INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables-save > /etc/sysconfig/iptables
선택적으로 원격 MariaDB 데이터베이스에 대한 아웃바운드 연결을 허용할 수 있습니다.
iptables -I OUTPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
MariaDB 연결 테스트
MariaDB가 성공적으로 설치되었는지 확인해야 합니다.
내장된 mysqladmin 도구를 사용하여 DB 서버에 연결해 보겠습니다.
mysqladmin version
명령은 다음을 반환합니다.
mysqladmin 버전 9.1 배포판 10.4.7-MariaDB, Linux on x86_64Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab 및 기타.서버 버전 10.4.7-MariaDBProtocol 버전 10UNIX socketUNIX 소켓을 통한 연결 로컬 호스트UNIX 소켓 /var/lib /mysql/mysql.sockUptime:59분 35초Threads:10 질문:24 느린 쿼리:0 열기:28 테이블 플러시:1 탭 열기
이는 MariaDB가 성공적으로 설치되었으며 데이터베이스가 실행 중임을 의미합니다.
mariadb 서버 콘솔에 연결하여 SQL 명령을 대화식으로 실행할 수 있습니다.
mysql -u root -p
MariaDB 구성 파일 – my.cnf
일반적으로 MariaDB가 설치된 후 구성 파일 /etc/my.cnf에 표준 구성을 추가합니다. 대부분의 서버에서 작동하며 지금까지 문제를 일으키지 않았습니다. my.cnf를 지우고 다음 텍스트를 추가합니다.
<미리>[mysqld]local-infile=0datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socksymbolic-links=0max_allowed_packet =128Msql_mode =""log-error =/var/log/mysql-error .LOG # 캐시 parametersquery_cache_size =16Mtable_open_cache =4096thread_cache_size =16key_buffer_size =8Mthread_stack =256Kjoin_buffer_size =2Msort_buffer_size =2M # 매개 변수의 임시 tablestmpdir에 대한 =/ tmpmax_heap_table_size =32Mtmp_table_size =32M # 이노 parametersinnodb_file_per_tableinnodb_buffer_pool_size =32Minnodb_flush_log_at_trx_commit =2innodb_flush_method =O_DIRECTinnodb_use_native_aio =0transaction-분리 =READ-COMMITTEDcharacter 세트 -server =utf8collation-server =utf8_unicode_ciinit-connect ="SET NAMES utf8 COLLATE utf8_unicode_ci"skip-name-resolve[mysqldump]quickquote-namesmax_allowed_packet =128Mdefault-character-set =_safe8[mysql] -오류=/var/log/mariadb/mariadb.logpid-file=/var/run/mariadb/mariadb.pid주요 my.cnf 매개변수에 대해 더 자세히 살펴보겠습니다.
- 데이터 디렉토리 DB 파일이 저장된 디렉토리입니다.
- tmpdir 임시 파일을 저장할 디렉토리입니다.
- 이름 확인 건너뛰기 DNS 이름 확인을 비활성화합니다.
- max_allowed_packet 허용되는 최대 패키지 크기입니다. DB가 blob 필드를 사용하는 경우 해당 값은 가장 큰 필드의 크기보다 작을 수 없습니다.
- 최대_연결 수 열린 연결의 최대 수입니다. 매개변수는 mariadb 서버와 동시에 작업할 수 있는 클라이언트 수를 설정합니다.
- # 캐시 매개변수 섹션에는 쿼리 캐시와 관련된 모든 것이 포함됩니다. DB 서버가 더 많은 리소스를 소비하므로 너무 높은 값을 설정하지 않는 것이 좋습니다.
- # InnoDB 매개변수 섹션에는 innodb 테이블과 관련된 모든 것이 포함됩니다.
- innodb_buffer_pool_size 데이터 및 인덱스용 캐시 버퍼입니다. 1-2개의 프로젝트가 서버에 있는 경우 값을 사용 가능한 RAM의 70-80%로 설정합니다.
- innodb_flush_method Linux의 경우 O_DIRECT 값을 설정하면 OS 수준 캐싱이 비활성화됩니다.
- innodb_flush_log_at_trx_commit 이 매개변수는 innoDB 테이블의 쓰기 속도에 영향을 줍니다. 이 매개변수를 진지하게 고려하십시오. 여기에서 0을 설정하면 성능이 향상되지만 데이터 손실 위험이 높아집니다. 보안이 우선시되는 동안 명백한 DB 서버 성능 향상을 보지 못했기 때문에 여기에서 값을 2로 설정하는 것을 선호합니다.
MariaDB를 위한 성능 최적화 및 조정
내 구성 파일을 복사할 필요가 없다고 덧붙이고 싶습니다. 모든 서버와 모든 프로젝트에는 자체 매개변수가 필요합니다. MariaDB 구성을 자동으로 확인하고 서버 최적화에 대한 몇 가지 권장 사항을 제공하는 일부 스크립트를 사용하는 것이 좋습니다.
mariadb 매개변수를 최적화하려면 Tuning-Primer.sh 스크립트를 사용할 수 있습니다. . 먼저 추가 도구를 설치합니다.
yum install bc net-tools -y
최적화 스크립트 다운로드:
wget https://launchpadlibrarian.net/78745738/tuning-primer.sh
.sh 파일에 실행 권한 할당:
chmod +x tuning-primer.sh
스크립트 실행:
./tuning-primer.sh
실행 후 스크립트는 당신이 알아야 할 유용한 정보를 보여줄 것입니다. 가장 중요한 것은 빨간색으로 강조 표시됩니다. 수정을 권장하는 사항입니다.
예를 들어 스크립트는 내가 설정한 것보다 훨씬 적은 연결 수를 보여주었습니다.
my.cnf 파일과 콘솔 모두에서 이 매개변수를 변경할 수 있습니다. 더 낮은 값(10)을 설정했고 스크립트에서 승인했습니다.
이러한 검사를 사용하여 mariadb 서버의 성능을 완벽하게 만들 수 있습니다.
참고로 DB 서버의 권장 연속 작동 시간은 48시간 이상이어야 더 정확한 정보를 얻을 수 있고 서버를 튜닝할 수 있습니다.
느린 쿼리 로그를 활성화하는 섹션을 추가할 수 있습니다. 프로젝트의 성과를 분석하는 데 도움이 됩니다. mysqld에 다음을 추가합니다. 섹션:
slow_query_log = 1 # enable the log of slow queries
long_query_time = 5 # set the time in seconds
slow_query_log_file = /var/log/slow-query.log # the name of your slow query log file and the path to it
log_queries_not_using_indexes # whether to write queries that do not use indexes to the log file
또한 MariaDB 및 느린 쿼리 로그 오류에 대한 로그 파일을 생성해야 합니다.
touch /var/log/mysql-error.log
touch /var/log/slow-query.log
db 서비스를 다시 시작하십시오:
systemctl restart mariadb
/var/log/slow-query.log를 열거나 실시간으로 확인하면 느린 쿼리 로그를 볼 수 있습니다.
tail -f /var/log/slow-query.log
따라서 프로젝트가 DB에 보내는 쿼리를 분석하고 감사를 수행할 수 있습니다.
DB 설정을 변경하는 경우 구성에 오류가 있는지 확인하십시오. my.cnf 설정을 변경한 후 구성에 오류가 있는지 확인해야 합니다.
systemctl status mariadb -l
기본 MariaDB 셸 명령
관리자가 mariadb 콘솔에서 자주 사용해야 하는 주요 cli 명령은 다음과 같습니다.
MariaDB 콘솔에 로컬로 로그온하려면 다음 명령을 실행하십시오.
mysql -u root -p
MariaDB 서버에 원격으로 연결하려면:
mysql -u root -p -h 192.168.1.20
유용한 MariaDB(MySQL) 명령:
create database db1;
— 이름이 db1인 DB 생성
show databases;
— 서버의 DB 목록을 표시합니다.
use db1;
— 이름이 db1인 DB에 로그온
show tables;
— 현재 데이터베이스의 모든 테이블을 나열합니다.
create user 'project'@'localhost' identified by '$sup#erP@ss1';
— 사용자(프로젝트)를 만들고 암호를 $sup#erP@ss1로 설정
grant all privileges on database_name.* to project@'localhost';
— 사용자 프로젝트에 모든 권한을 부여합니다.
flush privileges;
— 모든 권한 업데이트
show processlist;
— 활성 DB 연결을 봅니다. 다음 명령을 사용할 수도 있습니다.
show status where `variable_name` = 'Threads_connected';
mysql 콘솔에서 다음과 같은 일부 변수를 보거나 변경할 수 있습니다.
SHOW VARIABLES LIKE 'max_error_count';
변경하려면:
SET max_error_count=256;
결론적으로 DB 서버를 구성할 때 서버에 있는 프로젝트를 고려해야 한다는 점을 말씀드리고 싶습니다. 작은 프로젝트에 적용되는 것이 큰 프로젝트에는 확실히 적합하지 않습니다. 시도하고 실험하고 항상 로그를 확인하십시오. 다음 기사에서는 MariaDB 데이터베이스 서버 간의 복제를 사용하여 고가용성을 제공하고 앱 성능을 높이는 방법을 보여줍니다.