MariaDB-tietokantapalvelimen asentaminen, suojaus ja suorituskyvyn viritys


Tietokantapalvelin on tämän päivän sovelluksille välttämätön verkkoinfrastruktuurin kriittinen osa. Ilman kykyä tallentaa, hakea, päivittää ja poistaa tietoja (tarvittaessa), verkko- ja työpöytäsovellusten hyödyllisyys ja laajuus ovat hyvin rajalliset.

Lisäksi tietokantapalvelimen asennuksen, hallinnan ja konfiguroinnin tunteminen (jotta se toimisi odotetulla tavalla) on olennainen taito, joka jokaisen järjestelmänvalvojan tulee olla.

Tässä artikkelissa tarkastellaan lyhyesti, kuinka MariaDB-tietokantapalvelin asennetaan ja suojataan, ja sitten selitämme kuinka se määritetään.

MariaDB-palvelimen asennus ja suojaus

CentOS 7.x:ssä MariaDB korvasi MySQL:n, joka löytyy edelleen Ubuntusta (yhdessä MariaDB:n kanssa). Sama koskee openSUSEa.

Käytämme lyhennyksen vuoksi tässä opetusohjelmassa vain MariaDB:tä, mutta huomaa, että erilaisten nimien ja kehitysfilosofian lisäksi molemmat relaatiotietokannan hallintajärjestelmät (RDBMS) vahva> lyhennettynä) ovat lähes identtisiä.

Tämä tarkoittaa, että asiakaspuolen komennot ovat samat sekä MySQL:ssä että MariaDB:ssä, ja määritystiedostot on nimetty ja sijaitsevat samoissa paikoissa.

Asenna MariaDB seuraavasti:

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

Huomaa, että Ubuntussa sinua pyydetään antamaan salasana RDBMS-pääkäyttäjälle.

Kun yllä olevat paketit on asennettu, varmista, että tietokantapalvelu on käynnissä ja aktivoitu käynnistymään (CentOS:ssä ja openSUSEssa tämä toiminto on suoritettava manuaalisesti , kun taas Ubuntussa asennusprosessi on jo hoitanut sen puolestasi):

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

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

Suorita sitten mysql_secure_installation-komentosarja. Tämän prosessin avulla voit:

  1. aseta/nollaa salasana RDBMS-pääkäyttäjälle
  2. poistaa anonyymit kirjautumiset (täten sallia vain kelvollisen tilin omaavien käyttäjien kirjautua RDBMS:ään)
  3. poistaa pääkäyttäjän oikeudet muille koneille kuin localhostille
  4. poista testitietokanta (johon kuka tahansa voi päästä)
  5. aktivoi muutokset, jotka liittyvät kohtiin 1–4.

Yksityiskohtaisemman kuvauksen tästä prosessista voit katsoa Asenna MariaDB-tietokanta RHEL/CentOS/Fedora- ja Debian/Ubuntu -osiossa.

MariaDB-palvelimen määrittäminen

Oletusasetusasetukset luetaan seuraavista tiedostoista annetussa järjestyksessä: /etc/mysql/my.cnf, /etc/my.cnf ja ~ /.my.cnf.

Useimmiten vain /etc/my.cnf on olemassa. Tässä tiedostossa asetamme palvelimen laajuiset asetukset (jotka voidaan ohittaa samoilla asetuksilla tiedostossa ~/.my.cnf jokaiselle käyttäjälle).

Ensimmäinen asia, joka meidän on huomioitava kohdassa my.cnf, on, että asetukset on järjestetty luokkiin (tai ryhmiin), joissa kunkin luokan nimi on suljettu hakasulkeilla.

Palvelinjärjestelmän kokoonpanot on annettu osiossa [mysqld], jossa tyypillisesti löydät vain kaksi ensimmäistä asetusta alla olevasta taulukosta. Loput ovat muita usein käytettyjä vaihtoehtoja (jos ilmoitettu, muutamme oletusarvon valitsemamme mukautetulla vaihtoehdolla):

Setting and description

Oletusarvo

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

sidososoite=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 (eli se on oletuksena poistettu käytöstä)

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 (oletusarvoisesti poissa käytöstä)

CentOS:ssä meidän on kerrottava SELinuxille, jotta MariaDB voi kuunnella ei-standardista porttia (20500). ) ennen palvelun käynnistämistä uudelleen:

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

Käynnistä sitten MariaDB-palvelu uudelleen.

MariaDB:n suorituskyvyn viritys

Auttaaksemme meitä tarkistamaan ja säätämään kokoonpanoa erityistarpeidemme mukaan, voimme asentaa mysqltuner (skriptin, joka antaa ehdotuksia tietokantapalvelimemme suorituskyvyn parantamiseksi ja sen vakauden lisäämiseksi):

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

Vaihda sitten hakemisto tarballista purettuun kansioon (tarkka versio voi vaihdella tapauksessasi):

cd major-MySQLTuner-perl-7dabf27

ja suorita se (sinua pyydetään antamaan järjestelmänvalvojan MariaDB-tilisi kirjautumistiedot)

./mysqltuner.pl

Skriptin tulos on sinänsä erittäin mielenkiintoinen, mutta siirrytään alareunaan, jossa on lueteltu säädettävät muuttujat suositellulla arvolla:

Asetus query_cache_type osoittaa, onko kyselyvälimuisti poistettu käytöstä (0) vai käytössä (1). Tässä tapauksessa mysqltuner neuvoo meitä poistamaan sen käytöstä.

Joten miksi meitä kehotetaan poistamaan se käytöstä nyt? Syynä on se, että kyselyn välimuisti on hyödyllinen enimmäkseen korkean lukutason/matalan kirjoitustason skenaarioissa (mikä ei ole meidän tapaus, koska asensimme juuri tietokantapalvelimen).

VAROITUS: Ennen kuin teet muutoksia tuotantopalvelimen kokoonpanoon, sinun kannattaa kääntyä tietokannan asiantuntijan puoleen varmistaaksesi, että mysqltunerin antama suositus ei vaikuta negatiivisesti. olemassa olevalla asetuksella.

Yhteenveto

Tässä artikkelissa olemme selittäneet, kuinka MariaDB-tietokantapalvelin määritetään sen jälkeen, kun olemme asentaneet ja suojanneet sen. Yllä olevassa taulukossa luetellut konfigurointimuuttujat ovat vain muutamia asetuksia, joita kannattaa harkita palvelinta valmisteltaessa käyttöön tai viritettäessä sitä myöhemmin. Tutustu aina viralliseen MariaDB-dokumentaatioon ennen muutosten tekemistä tai tutustu MariaDB Performancen viritysvinkkeihin:

Älä missaa: 15 hyödyllistä MariaDB:n suorituskyvyn viritys- ja optimointivinkkiä

Kuten aina, älä epäröi kertoa meille, jos sinulla on kysyttävää tai kommentteja tästä artikkelista. Onko muita palvelinasetuksia, joita haluat käyttää? Voit vapaasti jakaa muun yhteisön kanssa alla olevan kommenttilomakkeen avulla.