Kaip įdiegti, apsaugoti ir suderinti MariaDB duomenų bazės serverį


Duomenų bazės serveris yra esminis tinklo infrastruktūros komponentas, būtinas šiuolaikinėms programoms. Nesant galimybės saugoti, nuskaityti, atnaujinti ir ištrinti duomenų (jei reikia), žiniatinklio ir darbalaukio programų naudingumas ir apimtis tampa labai riboti.

Be to, žinoti, kaip įdiegti, valdyti ir konfigūruoti duomenų bazės serverį (kad jis veiktų taip, kaip tikėtasi) yra esminiai įgūdžiai, kuriuos turi turėti kiekvienas sistemos administratorius.

Šiame straipsnyje trumpai apžvelgsime, kaip įdiegti ir apsaugoti MariaDB duomenų bazės serverį, o tada paaiškinsime, kaip jį sukonfigūruoti.

MariaDB serverio diegimas ir apsauga

CentOS 7.x sistemoje MariaDB pakeitė MySQL, kurią vis dar galima rasti Ubuntu (kartu su MariaDB). Tas pats pasakytina ir apie openSUSE.

Trumpumo dėlei šioje mokymo programoje naudosime tik MariaDB, tačiau atminkite, kad ne tik skirtingi pavadinimai ir kūrimo filosofijos, bet ir Reliacinių duomenų bazių valdymo sistemos (RDBMS). trumpiau) yra beveik identiški.

Tai reiškia, kad kliento komandos yra vienodos ir MySQL, ir MariaDB, o konfigūracijos failai pavadinti ir išdėstyti tose pačiose vietose.

Norėdami įdiegti MariaDB, atlikite šiuos veiksmus:

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

Atminkite, kad naudojant Ubuntu jūsų bus paprašyta įvesti RDBMS root vartotojo slaptažodį.

Įdiegę aukščiau nurodytus paketus įsitikinkite, kad duomenų bazės paslauga veikia ir buvo suaktyvinta, kad būtų galima pradėti paleisti (CentOS ir openSUSE šią operaciją turėsite atlikti rankiniu būdu , o Ubuntu diegimo procesas jau pasirūpino už jus):

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

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

Tada paleiskite mysql_secure_installation scenarijų. Šis procesas leis jums:

  1. nustatyti/iš naujo nustatyti RDBMS root vartotojo slaptažodį
  2. pašalinti anoniminius prisijungimus (taip leidžiant tik galiojančią paskyrą turintiems vartotojams prisijungti prie RDBMS)
  3. išjungti root prieigą kitoms mašinoms nei localhost
  4. pašalinti bandymų duomenų bazę (kurią gali pasiekti visi)
  5. suaktyvinkite pakeitimus, susijusius su 1–4.

Išsamesnį šio proceso aprašymą galite rasti skyriuje Įdiegti MariaDB duomenų bazę RHEL/CentOS/Fedora ir Debian/Ubuntu skyriuje „Įdiegti“.

MariaDB serverio konfigūravimas

Numatytosios konfigūracijos parinktys nuskaitomos iš šių failų nurodyta tvarka: /etc/mysql/my.cnf, /etc/my.cnf ir ~ /.my.cnf.

Dažniausiai egzistuoja tik /etc/my.cnf. Šiame faile nustatysime viso serverio nustatymus (kuriuos galima nepaisyti naudojant tuos pačius nustatymus ~/.my.cnf kiekvienam vartotojui).

Pirmas dalykas, kurį turime atkreipti dėmesį į my.cnf, yra tai, kad nustatymai yra suskirstyti į kategorijas (arba grupes), kur kiekvienos kategorijos pavadinimas yra laužtiniuose skliaustuose.

Serverio sistemos konfigūracijos pateiktos skyriuje [mysqld], kur paprastai žemiau esančioje lentelėje rasite tik pirmuosius du nustatymus. Likusi dalis yra kitos dažnai naudojamos parinktys (jei nurodyta, pakeisime numatytąją vertę pasirinkta pasirinktine):

Setting and description

Numatytoji vertė

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 (tai reiškia, kad pagal numatytuosius nustatymus jis išjungtas)

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 (išjungta pagal numatytuosius nustatymus)

Sistemoje CentOS turėsime nurodyti SELinux, kad MariaDB leistų klausytis per nestandartinį prievadą (20500 ) prieš paleisdami paslaugą iš naujo:

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

Tada iš naujo paleiskite „MariaDB“ paslaugą.

„MariaDB“ našumo derinimas

Kad padėtume mums patikrinti ir suderinti konfigūraciją pagal konkrečius poreikius, galime įdiegti mysqltuner (scenarijų, kuris pateiks pasiūlymus, kaip pagerinti mūsų duomenų bazės serverio našumą ir padidinti jo stabilumą):

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

Tada pakeiskite katalogą į aplanką, ištrauktą iš tarball (tiksli versija jūsų atveju gali skirtis):

cd major-MySQLTuner-perl-7dabf27

ir paleiskite jį (būsite paraginti įvesti administracinės MariaDB paskyros kredencialus)

./mysqltuner.pl

Scenarijaus išvestis pati savaime yra labai įdomi, tačiau pereikime prie apačios, kur pateikiami koreguotini kintamieji su rekomenduojama reikšme:

Nustatymas query_cache_type nurodo, ar užklausos talpykla išjungta (0) ar įgalinta (1). Tokiu atveju mysqltuner pataria jį išjungti.

Taigi kodėl mums patariama jį išjungti dabar? Priežastis ta, kad užklausos talpykla dažniausiai naudinga esant didelio skaitymo/mažai rašymo scenarijams (tai nėra mūsų atvejis, nes ką tik įdiegėme duomenų bazės serverį).

ĮSPĖJIMAS: prieš keisdami gamybos serverio konfigūraciją, labai rekomenduojame pasikonsultuoti su ekspertu duomenų bazės administratoriumi, kad įsitikintumėte, jog mysqltuner pateikta rekomendacija neturės neigiamos įtakos. esamu nustatymu.

Santrauka

Šiame straipsnyje paaiškinome, kaip sukonfigūruoti MariaDB duomenų bazės serverį, kai jį įdiegėme ir apsaugome. Aukščiau esančioje lentelėje išvardyti konfigūracijos kintamieji yra tik keli nustatymai, į kuriuos galbūt norėsite atsižvelgti ruošiant serverį naudoti arba derindami jį vėliau. Prieš atlikdami pakeitimus, visada peržiūrėkite oficialią MariaDB dokumentaciją arba peržiūrėkite mūsų MariaDB našumo derinimo patarimus:

Nepraleiskite: 15 naudingų MariaDB našumo derinimo ir optimizavimo patarimų

Kaip visada, nedvejodami praneškite mums, jei turite klausimų ar komentarų apie šį straipsnį. Ar yra kokių nors kitų serverio nustatymų, kuriuos norėtumėte naudoti? Nesivaržykite pasidalinti su likusia bendruomene naudodami toliau pateiktą komentarų formą.