Kako namestiti, varno in prilagoditi delovanje strežnika baz podatkov MariaDB


Strežnik baz podatkov je ključna komponenta omrežne infrastrukture, ki je potrebna za današnje aplikacije. Brez možnosti shranjevanja, pridobivanja, posodabljanja in brisanja podatkov (kadar je to potrebno) sta uporabnost in obseg spletnih in namiznih aplikacij zelo omejena.

Poleg tega je znanje namestitve, upravljanja in konfiguriranja strežnika baz podatkov (tako da deluje po pričakovanjih) bistvena spretnost, ki jo mora imeti vsak sistemski skrbnik.

V tem članku bomo na kratko pregledali, kako namestiti in zavarovati strežnik baz podatkov MariaDB, nato pa bomo razložili, kako ga konfigurirati.

Namestitev in zavarovanje strežnika MariaDB

V CentOS 7.x je MariaDB zamenjal MySQL, ki ga še vedno najdemo v Ubuntuju (skupaj z MariaDB). Enako velja za openSUSE.

Za kratkost bomo v tej vadnici uporabili samo MariaDB, vendar upoštevajte, da sta poleg različnih imen in razvojnih filozofij oba sistema relacijskega upravljanja baz podatkov (na kratko RDBMS) skoraj enaka.

To pomeni, da so ukazi na strani odjemalca na MySQL in MariaDB enaki, konfiguracijske datoteke pa so poimenovane in nameščene na istih mestih.

Če želite namestiti MariaDB, naredite:

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

Upoštevajte, da boste v Ubuntuju morali vnesti geslo za korenskega uporabnika RDBMS.

Ko so zgornji paketi nameščeni, se prepričajte, da se storitev baze podatkov izvaja in je bila aktivirana za zagon ob zagonu (v CentOS in openSUSE boste morali to operacijo izvesti ročno, medtem ko bo v Ubuntuju postopek namestitve že poskrbel za to zate):

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

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

Nato zaženite skript mysql_secure_installation . Ta postopek vam bo omogočil:

  1. nastavite/ponastavite geslo za korenskega uporabnika RDBMS
  2. odstranite anonimne prijave (s tem omogočite prijavo v RDBMS samo uporabnikom z veljavnim računom)
  3. onemogočite korenski dostop za računalnike, ki niso localhost
  4. odstranite testno bazo podatkov (do katere ima dostop vsakdo)
  5. aktivirajte spremembe, povezane z 1 do 4.

Za podrobnejši opis tega postopka si lahko ogledate razdelek Post installation v poglavju Install MariaDB Database v RHEL/CentOS/Fedora in Debian/Ubuntu.

Konfiguriranje strežnika MariaDB

Privzete možnosti konfiguracije se berejo iz naslednjih datotek v danem vrstnem redu: /etc/mysql/my.cnf , /etc/my.cnf in ~ /.my.cnf .

Najpogosteje obstaja samo /etc/my.cnf . V tej datoteki bomo nastavili nastavitve za celoten strežnik (ki jih lahko preglasimo z enakimi nastavitvami v ~/.my.cnf za vsakega uporabnika).

Prva stvar, ki jo moramo opozoriti pri my.cnf , je, da so nastavitve razvrščene v kategorije (ali skupine), kjer je vsako ime kategorije zaprto v oglatih oklepajih.

Konfiguracije strežniškega sistema so podane v odseku [mysqld] , kjer običajno najdete le prvi dve nastavitvi v spodnji tabeli. Ostalo so druge pogosto uporabljene možnosti (kjer je navedeno, bomo privzeto vrednost spremenili s prilagojeno po svoji izbiri):

To bomo spremenili tako, da bomo službi naročili, naj posluša samo na glavni naslov (192.168.0.13):

bind_address = 192.168.0.13 bind_address = 0.0.0.0 vrata predstavljajo vrata, kjer bo poslušal strežnik baze podatkov.

Privzeto vrednost (3306) bomo zamenjali z 20500 (vendar se moramo prepričati, da ta vrata ne uporablja nič drugega):
vrata = 20500

Medtem ko bodo nekateri trdili, da varnost zaradi nejasnosti ni dobra praksa, je spreminjanje privzetih vrat aplikacij za višja osnovna - še vedno učinkovita - metoda za odvračanje od pregledov vrat. port = 3306 innodb_buffer_pool_size je področje medpomnilnika (v bajtih) pomnilnika, je dodeljena podatkom in indeksom, do katerih pogosto dostopate, ko uporabljate Innodb (ki je privzeto v MariaDB) ali XtraDB kot pomnilnik.

Privzeto vrednost bomo zamenjali s 256 MB:

innodb_buffer_pool_size = 256M innodb_buffer_pool_size = 134217728 skip_name_resolve označuje, ali bodo imena gostiteljev razrešena na dohodnih povezavah. . Če je nastavljeno na 1, kot bomo storili v tem priročniku, samo naslovi IP.

Če za določitev dovoljenj ne potrebujete imen gostiteljev, je priporočljivo to spremenljivko onemogočiti (da bi pospešili povezave in poizvedbe) tako, da nastavite njeno vrednost na 1:

preskoči_ime_resolve = 1 preskoči_ime_resolve = 0 query_cache_size predstavlja velikost (v bajtih), ki je na voljo poizvedbi predpomnilnik na disku, kjer se rezultati poizvedb SELECT shranijo za prihodnjo uporabo, ko se izvede enaka poizvedba (v isto bazo podatkov in z istim protokolom in istim naborom znakov).

Izberite velikost predpomnilnika poizvedb, ki ustreza vašim potrebam, glede na 1) število ponavljajočih se poizvedb in 2) približno število zapisov, ki naj bi jih te ponavljajoče se poizvedbe vrnile. Zaenkrat bomo to vrednost nastavili na 100 MB:

query_cache_size = 100M query_cache_size = 0 (kar pomeni, da je privzeto onemogočen) max_connections je največje število hkratnih odjemalskih povezav s strežnikom . To vrednost bomo nastavili na 30:
max_connections = 30 Vsaka povezava bo uporabila nit in bo tako porabila pomnilnik. To dejstvo upoštevajte pri nastavitvi max_connections. max_connections = 151 thread_cache_size označuje število niti, ki jih strežnik dodeli za ponovno uporabo po tem, ko odjemalec odklopi in sprosti niti, ki so bile prej v uporabi. V tem primeru je poceni (z vidika uspešnosti) ponovno uporabiti nit, kot pa ustvariti novo.

Še enkrat, to je odvisno od števila povezav, ki jih pričakujete. To vrednost lahko varno nastavimo na polovico števila max_connections:

thread_cache_size = 15 thread_cache_size = 0 (privzeto onemogočeno) V CentOS-u bomo morali SELinuxu povedati, naj MariaDB pred ponovnim zagonom storitve dovoli poslušanje na nestandardnih vratih (20500):

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

Nato znova zaženite storitev MariaDB.

Nastavitev zmogljivosti MariaDB

Za pomoč pri preverjanju in nastavljanju konfiguracije glede na naše posebne potrebe lahko namestimo mysqltuner (skript, ki bo vseboval predloge za izboljšanje učinkovitosti našega strežnika baz podatkov in povečanje njegove stabilnosti):

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

Nato spremenite imenik v mapo, izvlečeno iz tarball (natančna različica se lahko v vašem primeru razlikuje):

# cd major-MySQLTuner-perl-7dabf27

in ga zaženite (pozvani boste, da vnesete poverilnice svojega skrbniškega računa MariaDB)

# ./mysqltuner.pl

Rezultat skripta je že sam po sebi zelo zanimiv, vendar pojdimo na dno, kjer so spremenljivke, ki jih je treba prilagoditi, navedene s priporočeno vrednostjo:

Nastavitev query_cache_type označuje, ali je predpomnilnik poizvedb onemogočen (0) ali omogočen (1). V tem primeru nam mysqltuner svetuje, da ga onemogočimo.

Zakaj torej svetujemo, da ga zdaj deaktiviramo? Razlog je v tem, da je predpomnilnik poizvedb uporaben predvsem v scenarijih z visokim branjem/nizkim zapisom (kar pa ni naš primer, saj smo pravkar namestili strežnik baze podatkov).

OPOZORILO: Preden spremenite konfiguracijo delovnega strežnika, vas prosimo, da se obrnete na strokovnjaka skrbnika baze podatkov, da zagotovite, da priporočilo mysqltunerja ne bo negativno vplivalo na obstoječo nastavitev.

Povzetek

V tem članku smo razložili, kako konfigurirati strežnik baz podatkov MariaDB, potem ko smo ga namestili in zavarovali. Konfiguracijske spremenljivke, navedene v zgornji tabeli, so le nekatere nastavitve, ki jih boste morda želeli upoštevati pri pripravi strežnika na uporabo ali pri poznejši nastavitvi. Pred spremembami se vedno sklicujete na uradno dokumentacijo MariaDB ali se obrnite na naše nasvete za nastavitev učinkovitosti MariaDB:

Kot vedno nas ne oklevajte obvestiti, če imate kakršna koli vprašanja ali komentarje glede tega članka. Ali obstajajo še kakšne druge nastavitve strežnika, ki jih želite uporabljati? Lahko delite s preostalo skupnostjo s pomočjo spodnjega obrazca za komentar.