Zoeken op website

Hoe de MariaDB-databaseserver te installeren, beveiligen en afstemmen op de prestaties


Een databaseserver is een cruciaal onderdeel van de netwerkinfrastructuur die nodig is voor de hedendaagse toepassingen. Zonder de mogelijkheid om gegevens op te slaan, op te halen, bij te werken en te verwijderen (indien nodig), worden het nut en de reikwijdte van web- en desktop-apps zeer beperkt.

Bovendien is het weten hoe u een databaseserver moet installeren, beheren en configureren (zodat deze naar verwachting werkt) een essentiële vaardigheid waarover elke systeembeheerder moet beschikken.

In dit artikel bespreken we kort hoe u een MariaDB-databaseserver installeert en beveiligt en daarna leggen we uit hoe u deze kunt configureren.

Een MariaDB-server installeren en beveiligen

In CentOS 7.x verving MariaDB MySQL, dat nog steeds te vinden is in Ubuntu (samen met MariaDB). Hetzelfde geldt voor openSUSE.

Kortheidshalve gebruiken we in deze tutorial alleen MariaDB, maar houd er rekening mee dat beide Relationele DataBase Management Systemen (RDBMS's niet alleen verschillende namen en ontwikkelingsfilosofieën hebben, kortweg) zijn vrijwel identiek.

Dit betekent dat de opdrachten aan de clientzijde hetzelfde zijn op zowel MySQL als MariaDB, en dat de configuratiebestanden dezelfde naam hebben en zich op dezelfde plaatsen bevinden.

Om MariaDB te installeren, doet u het volgende:

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

Houd er rekening mee dat u in Ubuntu wordt gevraagd een wachtwoord in te voeren voor de RDBMS-rootgebruiker.

Zodra de bovenstaande pakketten zijn geïnstalleerd, zorg ervoor dat de databaseservice actief is en is geactiveerd om te starten bij het opstarten (in CentOS en openSUSE moet u deze bewerking handmatig uitvoeren , terwijl in Ubuntu het installatieproces dit al voor je heeft gedaan):

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

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

Voer vervolgens het script mysql_secure_installation uit. Met dit proces kunt u:

  1. stel het wachtwoord in/reset het voor de RDBMS-rootgebruiker
  2. verwijder anonieme logins (waardoor alleen gebruikers met een geldig account kunnen inloggen op het RDBMS)
  3. schakel root-toegang uit voor andere machines dan localhost
  4. verwijder de testdatabase (waartoe iedereen toegang heeft)
  5. activeer de wijzigingen die bij 1 tot en met 4 horen.

Voor een meer gedetailleerde beschrijving van dit proces kun je de sectie Na de installatie raadplegen in MariaDB Database installeren in RHEL/CentOS/Fedora en Debian/Ubuntu.

MariaDB-server configureren

De standaardconfiguratieopties worden in de aangegeven volgorde uit de volgende bestanden gelezen: /etc/mysql/my.cnf, /etc/my.cnf en ~ /.mijn.cnf.

Meestal bestaat alleen /etc/my.cnf. In dit bestand zullen we de serverbrede instellingen instellen (die voor elke gebruiker kunnen worden overschreven met dezelfde instellingen in ~/.my.cnf).

Het eerste dat we moeten opmerken over mijn.cnf is dat de instellingen zijn georganiseerd in categorieën (of groepen) waarbij elke categorienaam tussen vierkante haakjes staat.

Serversysteemconfiguraties worden gegeven in de [mysqld] sectie, waar u doorgaans alleen de eerste twee instellingen in de onderstaande tabel zult vinden. De rest zijn andere veelgebruikte opties (waar aangegeven, zullen we de standaardwaarde wijzigen met een aangepaste waarde naar keuze):

Setting and description

Standaardwaarde

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.

poort=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 (wat betekent dat het standaard is uitgeschakeld)

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 (standaard uitgeschakeld)

In CentOS zullen we SELinux moeten vertellen om MariaDB toe te staan te luisteren op een niet-standaard poort (20500 ) voordat u de service opnieuw start:

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

Start vervolgens de MariaDB-service opnieuw.

MariaDB-prestaties afstemmen

Om ons te helpen bij het controleren en afstemmen van de configuratie volgens onze specifieke behoeften, kunnen we mysqltuner installeren (een script dat suggesties geeft om de prestaties van onze databaseserver te verbeteren en de stabiliteit ervan te vergroten):

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

Wijzig vervolgens de map naar de map die uit de tarball is uitgepakt (de exacte versie kan in uw geval verschillen):

cd major-MySQLTuner-perl-7dabf27

en voer het uit (u wordt gevraagd de inloggegevens van uw administratieve MariaDB-account in te voeren)

./mysqltuner.pl

De uitvoer van het script is op zichzelf erg interessant, maar laten we naar beneden gaan waar de variabelen die moeten worden aangepast worden vermeld met de aanbevolen waarde:

De instelling query_cache_type geeft aan of de querycache is uitgeschakeld (0) of ingeschakeld (1). In dit geval adviseert mysqltuner ons om het uit te schakelen.

Dus waarom wordt ons geadviseerd om het nu te deactiveren? De reden is dat de querycache vooral nuttig is in scenario's met veel lees-/laag schrijfniveau (wat niet bij ons het geval is, aangezien we zojuist de databaseserver hebben geïnstalleerd).

WAARSCHUWING: voordat u wijzigingen aanbrengt in de configuratie van een productieserver, wordt u ten zeerste aangeraden een deskundige databasebeheerder te raadplegen om er zeker van te zijn dat een aanbeveling van mysqltuner geen negatieve invloed heeft op een bestaande instelling.

Samenvatting

In dit artikel hebben we uitgelegd hoe je een MariaDB-databaseserver configureert nadat we deze hebben geïnstalleerd en beveiligd. De configuratievariabelen in de bovenstaande tabel zijn slechts enkele instellingen waarmee u rekening kunt houden wanneer u de server gereedmaakt voor gebruik of wanneer u deze later afstemt. Raadpleeg altijd de officiële MariaDB-documentatie voordat u wijzigingen aanbrengt of raadpleeg onze MariaDB Performance tuning-tips:

Mis het niet: 15 nuttige MariaDB-prestatieafstemming en optimalisatietips

Aarzel zoals altijd niet om ons te laten weten of u vragen of opmerkingen heeft over dit artikel. Zijn er nog andere serverinstellingen die u graag gebruikt? Deel het gerust met de rest van de community via het onderstaande reactieformulier.