Cum se instalează și se configurează MariaDB pe Ubuntu și CentOS

Să învățăm cum să instalăm și să configurați MariaDB, un popular sistem de gestionare a bazelor de date relaționale MySQL (RDBMS).

Este dezvoltat în comunitate și are opțiunea de suport comercial. MariaDB a fost menită să rămână foarte compatibilă cu MySQL, deși există unele abateri.

În acest articol, vom acoperi instalarea și configurarea MariaDB pe Ubuntu 20.x și CentOS 7.x/8.x și, la sfârșit, vom analiza câteva bune practici pentru securizarea și îmbunătățirea performanței sale.

MariaDB pe Ubuntu

Pe Ubuntu 20.x, MariaDB este disponibil direct din depozitele sale implicite. Vom folosi apt pentru această sarcină.

Prima actualizare a datelor din depozitele apt prin:

$ sudo apt update

Odată ce datele din depozit sunt actualizate, rulați:

$ sudo apt install mariadb-server

Aceasta va instala MariaDB și pachetele necesare. Confirmați cu „Y” pentru orice solicitare pe care le puteți primi în timpul execuției comenzii anterioare.

Do you want to continue? [Y/n] Y

MariaDB pe CentOS 7.x

Pentru CentOS 7.x, versiunea disponibilă MariaDB din depozitul implicit CentOS este 5.x. Vom instala cea mai recentă versiune disponibilă de MariaDB.

Pentru aceasta, trebuie să configuram mai întâi un depozit suplimentar yum. MariaDB oferă o modalitate ușoară de a utiliza scriptul mariadb_repo_setup. Pentru a obține configurarea depozitului, rulați următoarele comenzi pe sistemul dvs. CentOS 7.x:

$ sudo yum install wget
$ wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
$ chmod +x mariadb_repo_setup
$ sudo ./mariadb_repo_setup

Acest script va configura depozitul yum necesar pentru a instala automat cea mai recentă versiune a MariaDB. La momentul scrierii acestui articol, este 10.x.

Sau, în cazul în care doriți să mergeți pe calea manuală, puteți configura un depozit manual yum creând un nou fișier repo ca:

$ sudo vi /etc/yum.repos.d/MariaDB.repo

Apoi adăugați următoarele detalii în fișierul repo și salvați-l:

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Acum, pentru a instala MariaDB, rulați comanda de mai jos:

$ sudo yum install MariaDB-server

Confirmați toate solicitările care apar în timpul instalării introducând „y”:

Is this ok [y/d/N]: y

Aceasta completează instalarea serverului MariaDB și a pachetelor dependente.

MariaDB pe CentOS 8.x

Pentru CentOS 8.x, versiunea disponibilă din depozitele implicite este 10.3 sau mai nouă. Putem instala direct MariaDB folosind comanda DNF:

sudo dnf install mariadb-server

În caz contrar, pentru a obține cea mai recentă versiune disponibilă, puteți urma modul manual, așa cum este indicat în secțiunea anterioară pentru CentOS 7.x și asta ar trebui să vă facă să lucrați.

Pornește MariaDB

Pe o mașină Ubuntu, serviciul MariaDB va rula imediat după instalare, în timp ce pentru CentOS, trebuie să activăm și să pornim manual serviciile relevante.

În orice caz, atât pentru Ubuntu, cât și pentru CentOS, rulați comenzile de mai jos pentru a porni serviciul MariaDB, activat la pornire, precum și pentru a-l verifica:

$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
$ sudo systemctl status mariadb.service

Ieșire:

$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
$ sudo systemctl status mariadb.service
● mariadb.service - MariaDB 10.5.8 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Thu 2020-12-31 13:20:04 IST; 13s ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 13521 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─13521 /usr/sbin/mariadbd

Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: 10.5.8 started; log sequence number 45118; transaction id 20
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Plugin 'FEEDBACK' is disabled.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Buffer pool(s) load completed at 201231 13:20:04
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Server socket created on IP: '::'.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Reading of all Master_info entries succeeded
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Added new Master_info '' to hash table
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] /usr/sbin/mariadbd: ready for connections.
Dec 31 13:20:04 centos7vm mariadbd[13521]: Version: '10.5.8-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
Dec 31 13:20:04 centos7vm systemd[1]: Started MariaDB 10.5.8 database server.
$

Securizarea MariaDB

Ca prim pas după instalarea MariaDB, ar trebui să securizăm implementarea acestuia prin setarea unei parole de rădăcină, dezactivând autentificarea de la distanță rădăcină, eliminând baza de date de testare, precum și utilizatorii anonimi și, în final, reîncărcați privilegiile.

  Cum să vizualizați statisticile de performanță a sistemului pe Chromebookul dvs

Rulați comanda de mai jos pentru a întări MariaDB:

$ sudo mysql_secure_installation

Puteți urma instrucțiunile implicite cu acțiuni sugerate, cu excepția cazului în care aveți o cerință specifică de a vă abate.

Ieșire:

$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
$

Aici vom folosi autentificarea sistemului, așa că nu am configurat o parolă root separată pentru MariaDB, deoarece este deja sigură. Dacă este necesar, puteți configura oricând o parolă de root separată.

Validarea setării

Pentru a verifica configurarea MariaDB, rulați (specificați parola pe care ați configurat-o în timp ce rulați mysql_secure_installation sau, dacă ați omis în acel moment, utilizați acreditările rădăcină ale sistemului):

$ sudo mysqladmin -u root -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 53 min 17 sec

Threads: 2  Questions: 77  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

Puteți configura un nou cont de administrator în locul rădăcinii, așa cum se arată mai jos (schimbați valoarea parolei cu cea pe care intenționați să o setați pentru contul de administrator):

$ sudo mariadb
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 44
Server version: 10.5.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MariaDB [(none)]> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> exit
Bye
$

Verificați accesul cu noul utilizator administrator ca (introduceți parola așa cum a fost stabilită în pasul anterior):

$ mysqladmin -u admin -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 56 min 59 sec

Threads: 2  Questions: 83  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

Optimizarea sistemului de operare

După instalarea și securizarea configurației dvs. MariaDB, ar trebui să luați măsuri pentru reglarea sistemului de operare și a bazei de date pentru performanțe optime. Această reglare va varia în funcție de configurația sistemului dvs., tipul de utilizare, numărul de utilizatori și o serie de alți factori.

  Top 8 platforme pentru a angaja dezvoltatori WordPress

Din perspectiva sistemului de operare, unii parametri de sistem pot fi configurați pentru MariaDB, despre care vom discuta acum.

Setări kernel Linux – IO Scheduler

Programatoarele de IO recomandate pentru MariaDB sunt noop și termenul limită. Pentru a verifica, utilizați cat /sys/block/${DEVICE}/queue/scheduler

$ sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none
$

O modificare temporară poate fi făcută prin lansarea următoarei comenzi și efectul acesteia, dacă există, va fi imediat asupra performanței sistemului:

$ sudo echo noop > /sys/block/sda/queue/scheduler

Pentru ca acesta să fie persistent, va trebui să îl configurați în fișierul de configurare al GRUB așa cum se arată mai jos în /etc/default/grub, să reconstruiți GRUB și să reporniți sistemul.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

Limite de resurse – Limită de fișiere deschise

Linux limitează de obicei numărul de descriptori de fișiere pe care fiecare proces poate deschide. Pentru un sistem DB activ, această limită poate depăși cu ușurință sau poate afecta performanța. Pe multe sisteme Linux, această limită este implicită la 1024. În plus, există o opțiune de limite soft și hard.

Pentru a crește limita, puteți adăuga următoarele linii în /etc/security/limits.conf:

mysql soft nofile 65535
mysql hard nofile 65535

Va fi necesară o repornire a sistemului după care utilizatorul mysql ar putea să vadă și să folosească noile limite. Acest lucru poate fi verificat ca:

$ ulimit -Sn
65535
$ ulimit -Hn
65535

Limite de resurse – Dimensiunea fișierului de bază

Linux limitează dimensiunea fișierelor de bază, așa cum s-a văzut în cazul anterior. Din nou, aceasta are o limită soft și hard și implicit limita soft este setată la 0, ceea ce dezactivează efectiv generarea fișierelor de bază. Pentru a permite generarea de fișiere de bază (alte configurații necesare pentru generarea core dump), putem crește această valoare în /etc/security/limits.conf ca:

mysql soft core unlimited
mysql hard core unlimited

După repornirea sistemului, utilizatorul mysql va putea vedea noile valori folosind comanda ulimit ca:

$ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited

Configurați Swappiness

  Cum să partajați locația pe iPhone

Valoarea de schimb în Linux determină cât de probabil este sistemul să schimbe o pagină din memorie cu spațiul de schimb configurat pe sistem. De obicei, valoarea implicită este setată la 60, care poate fi verificată din:

sysctl vm.swappiness

Valoarea sa poate varia de la 0 la 100, unde o valoare mai mică înseamnă o probabilitate mai mică de schimbare. Pe un server de baze de date care rulează numai MariaDB, am dori să reducem această valoare la 0 pentru a evita pe cât posibil utilizarea swap-ului. Rețineți că setarea valorii de swappiness la 0 ar trebui făcută cu prudență, luând în considerare alți factori de proiectare a sistemului, deoarece în cazul utilizării mari a memoriei sau al încărcării I/O, există șansa de a ucide procesul Out Of Memory (OOM) de către kernel.

Deoarece se recomandă o setare de schimb scăzută pentru încărcăturile de lucru ale bazelor de date și, ca atare, pentru bazele de date MariaDB, se recomandă să setați schimbarea la o valoare de 1. Puteți adăuga linia de mai jos în /etc/sysctl.conf pentru a face această schimbare persistentă:

vm.swappiness = 1

Modificările vor intra în vigoare după repornirea sistemului, deși o puteți face oricând în avans folosind comanda sysctl:

sysctl -w vm.swappiness=1

Optimizări ale sistemului de fișiere

Pentru MariaDB, cele mai bune sisteme de fișiere Linux sunt, în general, considerate ca ext4, XFS și Btrfs, care sunt toate incluse în nucleul principal Linux și sunt acceptate pe scară largă. Aceste sisteme de fișiere sunt disponibile pe majoritatea distribuțiilor Linux. Fiecare sistem de fișiere are proprietățile și caracteristicile sale unice și poate fi ales în funcție de cerințe după o revizuire adecvată.

În plus, este puțin probabil să fie nevoie să înregistrați timpul de acces la fișiere pe un server de baze de date. Putem dezactiva acest lucru pentru a îmbunătăți performanța. Puteți monta sistemul de fișiere relevant cu opțiunea noatime sau îl puteți adăuga în opțiunile de montare din fișierul /etc/fstab pentru a-l face persistent.

Optimizare DB

Există mai multe reglabile interne funcționării MariaDB care pot fi personalizate în funcție de cerințele și nevoile cuiva.

Vom discuta câteva dintre ele aici.

MariaDB este configurat în mare parte de fișierul my.cnf.

Pe Ubuntu, puteți găsi my.cnf la:

/etc/mysql/my.cnf

În timp ce este pe CentOS, se află la:

/etc/my.cnf

Documentația detaliată despre ce variabile sunt disponibile pentru reglare în fișierul de configurare poate fi consultată Aici.

Multe depind și de tipul de motor folosit de MariaDB, și anume, MyISAM și InnoDB sau XtraDB. Ambele au propriile seturi de avantaje și dezavantaje, iar alegerea unuia depinde de cerințele bazei de date și ale aplicației.

Ar trebui să setăm innodb_buffer_pool_size la aproximativ 80% din memorie. Acest lucru asigură că 80% din setul dvs. de lucru este în memorie.

Unii dintre ceilalți parametri importanți reglabili sunt:

innodb_log_file_size
innodb_flush_method
innodb_thread_sleep_delay
innodb_adaptive_max_sleep_delay
innodb_buffer_pool_instances
innodb_buffer_pool_size
innodb_max_dirty_pages_pct_lwm
innodb_read_ahead_threshold
innodb_thread_concurrency

Mai multe detalii despre reglarea variabilelor InnoDB sau XtraDB pot fi găsite Aici. Faceți referire la aceasta ghid pentru toate opțiunile de reglare disponibile pentru MariaDB.

Dacă sunteți interesat, consultați aceste resurse pentru a învăța SQL și NoSQL.

Concluzie

MariaDB este una dintre alegerile populare când vine vorba de relația DBMS. A fi open-source cu o comunitate diversă se adaugă mai mult la asta.

Pentru a afla mai multe, consultați-l documentație care include subiecte precum SQL de bază, migrare, administrare MariaDB, disponibilitate ridicată, reglare a performanței, motoare de stocare, programare și personalizare. De asemenea, poate doriți să dezactivați înregistrarea binară dacă nu utilizați un cluster.