Com instal·lar, assegurar i ajustar el rendiment del servidor de bases de dades MariaDB


Un servidor de bases de dades és un component crític de la infraestructura de xarxa necessària per a les aplicacions actuals. Sense la possibilitat d'emmagatzemar, recuperar, actualitzar i suprimir dades (quan calgui), la utilitat i l'abast de les aplicacions web i d'escriptori esdevenen molt limitats.

A més, saber instal·lar, gestionar i configurar un servidor de bases de dades (perquè funcioni com s'espera) és una habilitat essencial que ha de tenir tot administrador de sistemes.

En aquest article revisarem breument com instal·lar i protegir un servidor de bases de dades MariaDB i després explicarem com configurar-lo.

Instal·lació i seguretat d'un servidor MariaDB

A CentOS 7.x, MariaDB va substituir MySQL, que encara es pot trobar a Ubuntu (juntament amb MariaDB). El mateix passa amb openSUSE.

Per a la brevetat, només utilitzarem MariaDB en aquest tutorial, però tingueu en compte que, a més de tenir noms i filosofies de desenvolupament diferents, tots dos sistemes de gestió de bases de dades relacionals (RDBMS per abreujar) són gairebé idèntics.

Això vol dir que les ordres del costat del client són les mateixes tant a MySQL com a MariaDB, i els fitxers de configuració s'anomenen i es troben als mateixos llocs.

Per instal·lar MariaDB, feu:

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

Tingueu en compte que, a Ubuntu, se us demanarà que introduïu una contrasenya per a l'usuari root RDBMS.

Un cop instal·lats els paquets anteriors, assegureu-vos que el servei de base de dades s'està executant i s'ha activat per iniciar-se a l'arrencada (a CentOS i openSUSE haureu de fer aquesta operació manualment, mentre que a Ubuntu el procés d'instal·lació ja se n'haurà fet càrrec). per a tu):

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

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

A continuació, executeu l'script mysql_secure_installation. Aquest procés us permetrà:

  1. establir/restablir la contrasenya per a l'usuari root RDBMS
  2. eliminar els inicis de sessió anònims (per tant, només els usuaris amb un compte vàlid poden iniciar sessió al SGBDR)
  3. desactiva l'accés root per a màquines que no siguin localhost
  4. elimineu la base de dades de prova (a la qual pot accedir tothom)
  5. activa els canvis associats amb l'1 al 4.

Per obtenir una descripció més detallada d'aquest procés, podeu consultar la secció Post-instal·lació a Instal·lar la base de dades MariaDB a RHEL/CentOS/Fedora i Debian/Ubuntu.

Configuració del servidor MariaDB

Les opcions de configuració per defecte es llegeixen dels fitxers següents en l'ordre donat: /etc/mysql/my.cnf, /etc/my.cnf i ~ /.my.cnf.

Molt sovint, només existeix /etc/my.cnf. És en aquest fitxer on establirem la configuració de tot el servidor (que es pot substituir amb la mateixa configuració a ~/.my.cnf per a cada usuari).

El primer que hem de tenir en compte sobre my.cnf és que la configuració s'organitza en categories (o grups) on cada nom de categoria està inclòs entre claudàtors.

Les configuracions del sistema del servidor es donen a la secció [mysqld], on normalment només trobareu els dos primers paràmetres a la taula següent. La resta són altres opcions d'ús freqüent (on s'indiqui, canviarem el valor per defecte amb un de personalitzat que triem):

Ho canviarem per indicar al servei que només escolti a la seva adreça principal (192.168.0.13):

bind_address=192.168.0.13 bind_address=0.0.0.0 port representa el port on escoltarà el servidor de bases de dades.

Substituirem el valor predeterminat (3306) per 20500 (però ens hem d'assegurar que res més utilitzi aquest port):
port=20500

Tot i que algunes persones argumentaran que la seguretat a través de l'obscuritat no és una bona pràctica, canviar els ports d'aplicació predeterminats per altres més alts és un mètode rudimentari, però eficaç, per desanimar les exploracions de ports. port=3306 innodb_buffer_pool_size és el conjunt de memòria intermèdia (en bytes) de memòria que s'assigna per a dades i índexs als quals s'accedeix amb freqüència quan s'utilitza Innodb (que és el predeterminat a MariaDB) o XtraDB com a motor d'emmagatzematge.

Substituirem el valor predeterminat per 256 MB:

innodb_buffer_pool_size=256M innodb_buffer_pool_size=134217728 skip_name_resolve indica si els noms d'amfitrió es resoldran o no a les connexions entrants . Si s'estableix a 1, com farem en aquesta guia, només les adreces IP.

A menys que necessiteu noms d'amfitrió per determinar els permisos, és recomanable desactivar aquesta variable (per tal d'accelerar les connexions i les consultes) posant el seu valor a 1:

skip_name_resolve=1 skip_name_resolve=0 query_cache_size representa la mida (en bytes) disponible per a la consulta memòria cau al disc, on els resultats de les consultes SELECT s'emmagatzemen per a un ús futur quan es realitza una consulta idèntica (a la mateixa base de dades i utilitzant el mateix protocol i el mateix conjunt de caràcters).

Hauríeu de triar una mida de memòria cau de consultes que s'ajusti a les vostres necessitats en funció de 1) el nombre de consultes repetitives i 2) el nombre aproximat de registres que s'espera que retornin aquestes consultes repetitives. De moment establirem aquest valor en 100 MB:

query_cache_size=100M query_cache_size=0 (el que significa que està desactivat per defecte) max_connections és el nombre màxim de connexions de client simultànies al servidor . Establirem aquest valor a 30:
max_connections=30Cada connexió utilitzarà un fil i, per tant, consumirà memòria. Tingueu en compte aquest fet quan configureu max_connections. max_connections=151 thread_cache_size indica el nombre de fils que el servidor assigna per a la seva reutilització després que un client es desconnecti i alliberi fil(s) que s'utilitzava anteriorment. En aquesta situació, és més barat (en termes de rendiment) reutilitzar un fil que crear-ne una de nou.

De nou, això depèn del nombre de connexions que espereu. Podem establir aquest valor amb seguretat a la meitat del nombre de max_connections:

thread_cache_size=15 thread_cache_size=0 (desactivat per defecte) A CentOS, haurem de dir-li a SELinux que permeti que MariaDB escolti en un port no estàndard (20500) abans de reiniciar el servei:

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

A continuació, reinicieu el servei MariaDB.

Ajustant el rendiment de MariaDB

Per ajudar-nos a comprovar i ajustar la configuració segons les nostres necessitats específiques, podem instal·lar mysqltuner (un script que proporcionarà suggeriments per millorar el rendiment del nostre servidor de bases de dades i augmentar la seva estabilitat):

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

A continuació, canvieu el directori a la carpeta extreta del fitxer tarball (la versió exacta pot ser diferent en el vostre cas):

# cd major-MySQLTuner-perl-7dabf27

i executeu-lo (se us demanarà que introduïu les credencials del vostre compte administratiu de MariaDB)

# ./mysqltuner.pl

La sortida de l'script és en si mateixa molt interessant, però anem a la part inferior on es mostren les variables a ajustar amb el valor recomanat:

La configuració query_cache_type indica si la memòria cau de consultes està desactivada (0) o activada (1). En aquest cas, mysqltuner ens aconsella que el desactivem.

Aleshores, per què se'ns aconsella desactivar-lo ara? La raó és que la memòria cau de consultes és útil sobretot en escenaris de lectura alta/baixa escriptura (que no és el nostre cas, ja que acabem d'instal·lar el servidor de bases de dades).

ADVERTÈNCIA: Abans de fer canvis a la configuració d'un servidor de producció, us recomanem que consulteu un administrador de bases de dades expert per assegurar-vos que una recomanació donada per mysqltuner no afectarà negativament una configuració existent.

Resum

En aquest article hem explicat com configurar un servidor de bases de dades MariaDB després d'haver-lo instal·lat i assegurat. Les variables de configuració que s'enumeren a la taula anterior són només algunes configuracions que potser voldreu tenir en compte mentre prepareu el servidor per utilitzar-lo o quan l'ajusteu més tard. Consulteu sempre la documentació oficial de MariaDB abans de fer canvis o consulteu els nostres consells d'ajust del rendiment de MariaDB:

Com sempre, no dubteu a fer-nos saber si teniu cap pregunta o comentari sobre aquest article. Hi ha alguna altra configuració del servidor que t'agradaria utilitzar? No dubteu a compartir-ho amb la resta de la comunitat mitjançant el formulari de comentaris a continuació.