MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как да инсталирате, защитите и настроите производителността на сървъра на базата данни MariaDB

Сървърът на базата данни е критичен компонент от мрежовата инфраструктура, необходима за днешните приложения. Без възможност за съхраняване, извличане, актуализиране и изтриване на данни (когато е необходимо), полезността и обхвата на уеб и настолните приложения стават много ограничени.

Освен това, да знаете как да инсталирате, управлявате и конфигурирате сървър на база данни (така че да работи според очакванията) е основно умение, което всеки системен администратор трябва да притежава.

В тази статия ще разгледаме накратко как да инсталирате и защитите сървър на база данни на MariaDB и след това ще обясним как да го конфигурирате.

Инсталиране и защита на MariaDB сървър

В CentOS 7.x , MariaDB замени MySQL, който все още може да се намери в Ubuntu (заедно с MariaDB). Същото важи и за openSUSE .

За краткост ще използваме само MariaDB в този урок, но имайте предвид, че освен че имат различни имена и философия на разработка, и двете Системи за управление на релационни бази данни (RDBMS за кратко) са почти идентични.

Това означава, че командите от страна на клиента са еднакви и в двата MySQL и MariaDB , а конфигурационните файлове са именувани и разположени на едни и същи места.

За да инсталирате MariaDB, направете:

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
# yum update && yum install mariadb mariadb-server # CentOS 

--------------- On Debian and Ubuntu --------------- 
$ sudo aptitude update && sudo aptitude install mariadb-client mariadb-server 

--------------- On openSUSE --------------- 
# zypper update && zypper install mariadb mariadb-tools # openSUSE

Имайте предвид, че в Ubuntu , ще бъдете помолени да въведете парола за root потребителя на RDBMS.

След като горните пакети бъдат инсталирани, уверете се, че услугата за база данни работи и е активирана, за да стартира при стартиране (в CentOS и openSUSE ще трябва да извършите тази операция ръчно, докато в Ubuntu процесът на инсталиране вече ще се е погрижил за вас):

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
# systemctl start mariadb && systemctl enable mariadb 

--------------- On openSUSE --------------- 
# systemctl start mysql && systemctl enable mysql

След това стартирайте mysql_secure_installation скрипт. Този процес ще ви позволи да:

  1. задайте/нулирайте паролата за root потребителя на RDBMS
  2. премахване на анонимни данни за влизане (по този начин позволява само на потребители с валиден акаунт да влизат в RDBMS)
  3. забранете root достъпа за машини, различни от localhost
  4. премахнете тестовата база данни (до която всеки има достъп)
  5. активирайте промените, свързани с 1 до 4.

За по-подробно описание на този процес можете да се обърнете към раздела След инсталиране в Инсталиране на MariaDB база данни в RHEL/CentOS/Fedora и Debian/Ubuntu.

Конфигуриране на MariaDB сървър

Опциите за конфигурация по подразбиране се четат от следните файлове в дадения ред:/etc/mysql/my.cnf , /etc/my.cnf и ~/.my.cnf .

Най-често само /etc/my.cnf съществува. Именно върху този файл ще зададем настройките за целия сървър (които могат да бъдат отменени със същите настройки в ~/.my.cnf за всеки потребител).

Първото нещо, което трябва да отбележим за my.cnf е, че настройките са организирани в категории (или групи), където името на всяка категория е оградено с квадратни скоби.

Системните конфигурации на сървъра са дадени в [mysqld] раздел, където обикновено ще намерите само първите две настройки в таблицата по-долу. Останалите са други често използвани опции (където е посочено, ще променим стойността по подразбиране с персонализирана по наш избор):

Настройки и описание Стойност по подразбиране
datadir е директорията, където се съхраняват файловете с данни. datadir=/var/lib/mysql
сокетът посочва името и местоположението на файла на сокета, който се използва за локални клиентски връзки. Имайте предвид, че сокет файлът е ресурс, който се използва за предаване на информация между приложенията. socket=/var/lib/mysql/mysql.sock
bind_address е адресът, където сървърът на базата данни ще слуша за TCP/IP връзки. Ако имате нужда вашият сървър да слуша на повече от един IP адрес, пропуснете тази настройка (0.0.0.0, което означава, че ще слуша на всички IP адреси, присвоени на този конкретен хост).

Ще променим това, за да инструктираме услугата да слуша само на основния си адрес (192.168.0.13):

bind_address=192.168.0.13

bind_address=0.0.0.0
портът представлява порта, където сървърът на базата данни ще слуша.

Ще заменим стойността по подразбиране (3306) с 20500 (но трябва да се уверим, че нищо друго не използва този порт):
port=20500

Въпреки че някои хора ще твърдят, че сигурността чрез неизвестност не е добра практика, промяната на портовете на приложението по подразбиране за по-високи е елементарен, но ефективен метод за обезкуражаване на сканирането на портове.

port=3306
innodb_buffer_pool_size е буферният пул (в байтове) памет, която се разпределя за данни и индекси, до които се осъществява често достъп при използване на Innodb (което е по подразбиране в MariaDB) или XtraDB като механизъм за съхранение.

Ще заменим стойността по подразбиране с 256 MB:

innodb_buffer_pool_size=256M

innodb_buffer_pool_size=134217728
skip_name_resolve показва дали имената на хостове ще бъдат разрешени или не при входящи връзки. Ако е зададено на 1, както ще направим в това ръководство, само IP адреси.

Освен ако не изисквате имена на хостове за определяне на разрешения, препоръчително е да деактивирате тази променлива (за да ускорите връзките и заявките), като зададете стойността й на 1:

skip_name_resolve=1

skip_name_resolve=0
query_cache_size представлява размерът (в байтове), достъпен за кеша на заявките на диска, където резултатите от SELECT заявки се съхраняват за бъдеща употреба, когато идентична заявка (до същата база данни и използване на същия протокол и същия набор от знаци).

Трябва да изберете размер на кеша на заявките, който отговаря на вашите нужди въз основа на 1) броя на повтарящите се заявки и 2) приблизителния брой записи, които се очаква да върнат тези повтарящи се заявки. За момента ще зададем тази стойност на 100 MB:

query_cache_size=100M

query_cache_size=0 (което означава, че е деактивиран по подразбиране)
max_connections е максималният брой едновременни клиентски връзки към сървъра. Ще зададем тази стойност на 30:
max_connections=30Всяка връзка ще използва нишка и по този начин ще консумира памет. Вземете предвид този факт, докато задавате max_connections.
max_connections=151
thread_cache_size указва броя на нишките, които сървърът заделя за повторна употреба, след като клиент прекъсне връзката и освободи нишките, използвани преди това. В тази ситуация е по-евтино (по отношение на производителността) повторното използване на нишка, отколкото създаването на нова.

Отново, това зависи от броя на връзките, които очаквате. Можем безопасно да зададем тази стойност на половината от броя на max_connections:

thread_cache_size=15

thread_cache_size=0 (деактивирано по подразбиране)

В CentOS , ще трябва да кажем на SELinux за да разрешите на MariaDB за слушане на нестандартен порт (20500 ) преди рестартиране на услугата:

# yum install policycoreutils-python
# semanage port -a -t mysqld_port_t -p tcp 20500

След това рестартирайте услугата MariaDB.

Настройка на производителността на MariaDB

За да ни помогнем да проверим и настроим конфигурацията според нашите специфични нужди, можем да инсталираме mysqltuner (скрипт, който ще предостави предложения за подобряване на производителността на нашия сървър на база данни и повишаване на неговата стабилност):

# wget https://github.com/major/MySQLTuner-perl/tarball/master
# tar xzf master

След това променете директорията в папката, извлечена от tarball-а (точната версия може да се различава във вашия случай):

# cd major-MySQLTuner-perl-7dabf27

и го стартирайте (ще бъдете подканени да въведете идентификационните данни на вашия административен акаунт в MariaDB)

# ./mysqltuner.pl

Резултатът от скрипта сам по себе си е много интересен, но нека прескочим до дъното, където променливите за коригиране са изброени с препоръчителната стойност:

query_cache_type настройката показва дали кешът на заявката е деактивиран (0) или активиран (1) . В този случай mysqltuner ни съветва да го деактивираме.

Така че защо ни съветват да го деактивираме сега? Причината е, че кешът на заявките е полезен най-вече в сценарии с високо четене/ниско записване (което не е нашият случай, тъй като току-що инсталирахме сървъра на базата данни).

ПРЕДУПРЕЖДЕНИЕ :Преди да направите промени в конфигурацията на производствен сървър, силно се препоръчва да се консултирате с експертен администратор на база данни, за да се уверите, че дадена препоръка от mysqltuner няма да повлияе отрицателно върху съществуваща настройка.

Резюме

В тази статия сме обяснили как да конфигурираме сървър на база данни на MariaDB, след като сме го инсталирали и защитили. Конфигурационните променливи, изброени в таблицата по-горе, са само няколко настройки, които може да искате да имате предвид, докато подготвяте сървъра за използване или когато го настройвате по-късно. Винаги се обръщайте към официалната документация на MariaDB, преди да направите промени или се обърнете към нашите съвети за настройка на производителността на MariaDB:

Не t Госпожица: 15 полезни съвета за настройка и оптимизиране на производителността на MariaDB

Както винаги, не се колебайте да ни уведомите, ако имате въпроси или коментари относно тази статия. Има ли други настройки на сървъра, които искате да използвате? Чувствайте се свободни да споделите с останалата част от общността, като използвате формуляра за коментари по-долу.

Станете сертифициран системен администратор за Linux
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как INSTR() работи в MariaDB

  2. Как работи операторът BINARY в MariaDB

  3. Как RADIANS() работи в MariaDB

  4. Изпълняване на заявки за анализ на големи данни с помощта на SQL и Presto

  5. Как работи CURTIME() в MariaDB