Vyhledávání na webu

Jak nainstalovat, zabezpečit a vyladit výkon databázového serveru MariaDB


Databázový server je kritickou součástí síťové infrastruktury nezbytné pro dnešní aplikace. Bez možnosti ukládat, načítat, aktualizovat a mazat data (v případě potřeby), užitečnost a rozsah webových a desktopových aplikací jsou velmi omezené.

Kromě toho znalost, jak nainstalovat, spravovat a konfigurovat databázový server (tak, aby fungoval podle očekávání), je základní dovedností, kterou musí mít každý správce systému.

V tomto článku si stručně zopakujeme, jak nainstalovat a zabezpečit databázový server MariaDB a poté vysvětlíme, jak jej nakonfigurovat.

Instalace a zabezpečení serveru MariaDB

V CentOS 7.x nahradila MariaDB MySQL, kterou stále lze nalézt v Ubuntu (spolu s MariaDB). Totéž platí pro openSUSE.

Pro stručnost budeme v tomto tutoriálu používat pouze MariaDB, ale mějte na paměti, že kromě různých názvů a vývojových filozofií jsou oba systémy pro správu relačních databází (RDBMS zkráceně) jsou téměř totožné.

To znamená, že příkazy na straně klienta jsou stejné na MySQL i MariaDB a konfigurační soubory jsou pojmenovány a umístěny na stejných místech.

Chcete-li nainstalovat MariaDB, postupujte takto:

--------------- 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

Všimněte si, že v Ubuntu budete požádáni o zadání hesla pro uživatele root RDBMS.

Po instalaci výše uvedených balíčků se ujistěte, že je databázová služba spuštěna a byla aktivována pro spuštění při bootování (v CentOS a openSUSE budete muset tuto operaci provést ručně , zatímco v Ubuntu se o to již postará instalační proces za vás):

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

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

Poté spusťte skript mysql_secure_installation. Tento proces vám umožní:

  1. nastavit/resetovat heslo pro uživatele root RDBMS
  2. odstranit anonymní přihlášení (a umožnit tak přihlášení do RDBMS pouze uživatelům s platným účtem)
  3. zakázat přístup root pro počítače jiné než localhost
  4. odstranit testovací databázi (ke které má kdokoli přístup)
  5. aktivujte změny spojené s 1 až 4.

Podrobnější popis tohoto procesu najdete v části Po instalaci v části Instalace databáze MariaDB v RHEL/CentOS/Fedora a Debian/Ubuntu.

Konfigurace serveru MariaDB

Výchozí možnosti konfigurace se čtou z následujících souborů v daném pořadí: /etc/mysql/my.cnf, /etc/my.cnf a ~ /.my.cnf.

Nejčastěji existuje pouze /etc/my.cnf. Právě na tomto souboru nastavíme nastavení na celém serveru (které lze přepsat stejným nastavením v ~/.my.cnf pro každého uživatele).

První věc, kterou si musíme všimnout u my.cnf je, že nastavení jsou uspořádána do kategorií (nebo skupin), kde je každý název kategorie uzavřen v hranatých závorkách.

Konfigurace systému serveru jsou uvedeny v sekci [mysqld], kde obvykle najdete pouze první dvě nastavení v tabulce níže. Zbytek jsou další často používané možnosti (tam, kde je uvedeno, změníme výchozí hodnotu na vlastní hodnotu podle našeho výběru):

Setting and description

Výchozí hodnota

datadir is the directory where the data files are stored.

datadir=/var/lib/mysql

socket indicates the name and location of the socket file that is used for local client connections. Keep in mind that a socket file is a resource that is utilized to pass information between applications.

socket=/var/lib/mysql/mysql.sock

bind_address is the address where the database server will listen on for TCP/IP connections. If you need your server to listen on more than one IP address, leave out this setting (0.0.0.0 which means it will listen on all IP addresses assigned to this specific host).

We will change this to instruct the service to listen only on its main address (192.168.0.13):

bind_address=192.168.0.13

bind_address=0.0.0.0

port represents the port where the database server will be listening.

We will replace the default value(3306) with 20500 (but we need to make sure nothing else is using that port):
port=20500

While some people will argue that security through obscurity is not good practice, changing the default application ports for higher ones is a rudimentary -yet effective- method to discourage port scans.

port=3306

innodb_buffer_pool_size is the buffer pool (in bytes) of memory that is allocated for data and indexes that are accessed frequently when using Innodb (which is the default in MariaDB) or XtraDB as storage engine.

We will replace the default value with 256 MB:

innodb_buffer_pool_size=256M

innodb_buffer_pool_size=134217728

skip_name_resolve indicates whether hostnames will be resolved or not on incoming connections. If set to 1, as we will do in this guide, only IP addresses.

Unless you require hostnames to determine permissions, it is advisable to disable this variable (in order to speed up connections and queries) by setting its value to 1:

skip_name_resolve=1

skip_name_resolve=0

query_cache_size represents the size (in bytes) available to the query cache in disk, where the results of SELECT queries are stored for future use when an identical query (to the same database and using the same protocol and same character set) is performed.

You should choose a query cache size that matches your needs based on 1) the number of repetitive queries, and 2) the approximate number of records those repetitive queries are expected to return. We will set this value to 100 MB for the time being:

query_cache_size=100M

query_cache_size=0 (což znamená, že je ve výchozím nastavení zakázáno)

max_connections is the maximum number of simultaneous client connections to the server. We will set this value to 30:
max_connections=30Each connection will use a thread, and thus will consume memory. Take this fact into account while setting max_connections.

max_connections=151

thread_cache_size indicates the numbers of threads that the server allocates for reuse after a client disconnects and frees thread(s) previously in use. In this situation, it is cheaper (performance-wise) to reuse a thread than instantiating a new one.

Again, this depends on the number of connections you are expecting. We can safely set this value to half the number of max_connections:

thread_cache_size=15

thread_cache_size=0 (ve výchozím nastavení zakázáno)

V CentOS budeme muset sdělit SELinux, aby umožnil MariaDB poslouchat na nestandardním portu (20500 ) před restartováním služby:

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

Poté restartujte službu MariaDB.

Ladění výkonu MariaDB

Abychom nám pomohli při kontrole a vyladění konfigurace podle našich konkrétních potřeb, můžeme nainstalovat mysqltuner (skript, který poskytne návrhy na zlepšení výkonu našeho databázového serveru a zvýšení jeho stability):

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

Poté změňte adresář do složky extrahované z tarballu (přesná verze se může ve vašem případě lišit):

cd major-MySQLTuner-perl-7dabf27

a spusťte jej (budete vyzváni k zadání přihlašovacích údajů vašeho administrativního účtu MariaDB)

./mysqltuner.pl

Výstup skriptu je sám o sobě velmi zajímavý, ale přeskočme na konec, kde jsou proměnné, které je třeba upravit, uvedeny s doporučenou hodnotou:

Nastavení query_cache_type udává, zda je mezipaměť dotazů deaktivována (0) nebo povolena (1). V tomto případě nám mysqltuner radí, abychom jej zakázali.

Proč je tedy doporučeno jej deaktivovat nyní? Důvodem je, že mezipaměť dotazů je užitečná většinou ve scénářích s vysokým čtením/nízkým zápisem (což není náš případ, protože jsme právě nainstalovali databázový server).

UPOZORNĚNÍ: Před provedením změn v konfiguraci produkčního serveru se důrazně doporučuje konzultovat s odborníkem správce databáze, aby se ujistil, že doporučení od mysqltuner nebude mít negativní dopad. na stávajícím nastavení.

souhrn

V tomto článku jsme vysvětlili, jak nakonfigurovat databázový server MariaDB poté, co jsme jej nainstalovali a zabezpečili. Konfigurační proměnné uvedené ve výše uvedené tabulce představují pouze několik nastavení, která byste měli zvážit při přípravě serveru k použití nebo při jeho pozdějším ladění. Před provedením změn si vždy přečtěte oficiální dokumentaci MariaDB nebo si přečtěte naše tipy pro ladění výkonu MariaDB:

Nenechte si ujít: 15 užitečných tipů pro ladění a optimalizaci výkonu MariaDB

Jako vždy nám neváhejte dát vědět, pokud máte nějaké dotazy nebo připomínky k tomuto článku. Chcete použít nějaká další nastavení serveru? Neváhejte a sdílejte se zbytkem komunity pomocí formuláře pro komentáře níže.