MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come installare, proteggere e ottimizzare le prestazioni di MariaDB Database Server

Un server di database è un componente critico dell'infrastruttura di rete necessaria per le applicazioni odierne. Senza la possibilità di archiviare, recuperare, aggiornare ed eliminare i dati (se necessario), l'utilità e la portata delle app Web e desktop diventa molto limitata.

Inoltre, sapere come installare, gestire e configurare un server di database (in modo che funzioni come previsto) è un'abilità essenziale che ogni amministratore di sistema deve possedere.

In questo articolo esamineremo brevemente come installare e proteggere un server di database MariaDB e poi spiegheremo come configurarlo.

Installazione e protezione di un server MariaDB

In CentOS 7.x , MariaDB ha sostituito MySQL, che si può ancora trovare in Ubuntu (insieme a MariaDB). Lo stesso vale per openSUSE .

Per brevità, utilizzeremo solo MariaDB in questo tutorial, ma tieni presente che oltre ad avere nomi e filosofie di sviluppo diversi, entrambi i Sistemi di gestione di database relazionali (RDBMS in breve) sono quasi identici.

Ciò significa che i comandi lato client sono gli stessi su entrambi MySQL e MariaDB e i file di configurazione sono denominati e posizionati nelle stesse posizioni.

Per installare MariaDB, fai:

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

Tieni presente che, in Ubuntu , ti verrà chiesto di inserire una password per l'utente root RDBMS.

Una volta installati i pacchetti di cui sopra, assicurati che il servizio database sia in esecuzione e che sia stato attivato per l'avvio all'avvio (in CentOS e openSUSE dovrai eseguire questa operazione manualmente, mentre in Ubuntu il processo di installazione se ne sarà già occupato per te):

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

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

Quindi esegui mysql_secure_installation sceneggiatura. Questo processo ti consentirà di:

  1. imposta/reimposta la password per l'utente root RDBMS
  2. rimuovere gli accessi anonimi (consentendo così solo agli utenti con un account valido di accedere all'RDBMS)
  3. disabilita l'accesso root per macchine diverse da localhost
  4. rimuovere il database di test (a cui chiunque può accedere)
  5. attiva le modifiche associate da 1 a 4.

Per una descrizione più dettagliata di questo processo, puoi fare riferimento alla sezione Post installazione in Installare il database MariaDB in RHEL/CentOS/Fedora e Debian/Ubuntu.

Configurazione del server MariaDB

Le opzioni di configurazione predefinite vengono lette dai seguenti file nell'ordine indicato:/etc/mysql/my.cnf , /etc/my.cnf e ~/.my.cnf .

Molto spesso, solo /etc/my.cnf esiste. È su questo file che imposteremo le impostazioni a livello di server (che possono essere sovrascritte con le stesse impostazioni in ~/.my.cnf per ogni utente).

La prima cosa che dobbiamo notare su my.cnf è che le impostazioni sono organizzate in categorie (o gruppi) in cui ogni nome di categoria è racchiuso tra parentesi quadre.

Le configurazioni del sistema del server sono fornite in [mysqld] sezione, dove in genere troverai solo le prime due impostazioni nella tabella seguente. Il resto sono altre opzioni usate di frequente (dove indicato, cambieremo il valore predefinito con uno personalizzato a nostra scelta):

Impostazione e descrizione Valore predefinito
datadir è la directory in cui sono archiviati i file di dati. datadir=/var/lib/mysql
socket indica il nome e la posizione del file socket utilizzato per le connessioni client locali. Tieni presente che un file socket è una risorsa utilizzata per passare informazioni tra le applicazioni. socket=/var/lib/mysql/mysql.sock
bind_address è l'indirizzo su cui il server del database ascolterà le connessioni TCP/IP. Se hai bisogno che il tuo server ascolti su più di un indirizzo IP, ometti questa impostazione (0.0.0.0 che significa che ascolterà tutti gli indirizzi IP assegnati a questo host specifico).

Lo cambieremo per indicare al servizio di ascoltare solo al suo indirizzo principale (192.168.0.13):

bind_address=192.168.0.13

bind_address=0.0.0.0
port rappresenta la porta su cui il server di database sarà in ascolto.

Sostituiremo il valore predefinito(3306) con 20500 (ma dobbiamo assicurarci che nient'altro stia usando quella porta):
port=20500

Mentre alcune persone sosterranno che la sicurezza attraverso l'oscurità non è una buona pratica, cambiare le porte delle applicazioni predefinite per quelle superiori è un metodo rudimentale, ma efficace, per scoraggiare le scansioni delle porte.

porta=3306
innodb_buffer_pool_size è il pool di buffer (in byte) di memoria allocato per i dati e gli indici a cui si accede frequentemente quando si utilizza Innodb (che è l'impostazione predefinita in MariaDB) o XtraDB come motore di archiviazione.

Sostituiremo il valore predefinito con 256 MB:

innodb_buffer_pool_size=256M

innodb_buffer_pool_size=134217728
skip_name_resolve indica se i nomi host verranno risolti o meno sulle connessioni in entrata. Se impostato a 1, come faremo in questa guida, solo indirizzi IP.

A meno che tu non richieda nomi host per determinare i permessi, è consigliabile disabilitare questa variabile (per velocizzare connessioni e query) impostandone il valore su 1:

skip_name_resolve=1

skip_name_resolve=0
query_cache_size rappresenta la dimensione (in byte) disponibile per la cache delle query nel disco, dove i risultati delle query SELECT vengono archiviati per un uso futuro quando una query identica (per lo stesso database e utilizzando lo stesso protocollo e lo stesso set di caratteri).

Dovresti scegliere una dimensione della cache delle query che corrisponda alle tue esigenze in base a 1) il numero di query ripetitive e 2) il numero approssimativo di record che tali query ripetitive dovrebbero restituire. Per il momento imposteremo questo valore su 100 MB:

query_cache_size=100 milioni

query_cache_size=0 (il che significa che è disabilitato per impostazione predefinita)
max_connections è il numero massimo di connessioni client simultanee al server. Imposteremo questo valore su 30:
max_connections=30Ogni connessione utilizzerà un thread e quindi consumerà memoria. Tieni in considerazione questo fatto durante l'impostazione di max_connections.
max_connections=151
thread_cache_size indica il numero di thread che il server alloca per il riutilizzo dopo che un client si è disconnesso e ha liberato i thread precedentemente in uso. In questa situazione, è più economico (dal punto di vista delle prestazioni) riutilizzare un thread piuttosto che crearne uno nuovo.

Ancora una volta, questo dipende dal numero di connessioni che ti aspetti. Possiamo tranquillamente impostare questo valore a metà del numero di max_connections:

thread_cache_size=15

thread_cache_size=0 (disabilitato per impostazione predefinita)

In CentOS , dovremo dirlo a SELinux per consentire a MariaDB per ascoltare su una porta non standard (20500 ) prima di riavviare il servizio:

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

Quindi riavvia il servizio MariaDB.

Ottimizzazione delle prestazioni di MariaDB

Per aiutarci a controllare e ottimizzare la configurazione in base alle nostre esigenze specifiche, possiamo installare mysqltuner (uno script che fornirà suggerimenti per migliorare le prestazioni del nostro server di database e aumentarne la stabilità):

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

Quindi cambia directory nella cartella estratta dal tarball (la versione esatta potrebbe differire nel tuo caso):

# cd major-MySQLTuner-perl-7dabf27

ed eseguilo (ti verrà richiesto di inserire le credenziali del tuo account amministrativo MariaDB)

# ./mysqltuner.pl

L'output dello script è di per sé molto interessante, ma andiamo in fondo dove sono elencate le variabili da regolare con il valore consigliato:

Il query_cache_type l'impostazione indica se la cache delle query è disabilitata (0) o abilitato (1) . In questo caso, mysqltuner ci sta consigliando di disabilitarlo.

Allora perché ti consigliamo di disattivarlo ora? Il motivo è che la cache delle query è utile principalmente in scenari di lettura/scrittura ridotta (il che non è il nostro caso, poiché abbiamo appena installato il server del database).

ATTENZIONE :prima di apportare modifiche alla configurazione di un server di produzione, si consiglia vivamente di consultare un amministratore esperto di database per assicurarsi che una raccomandazione fornita da mysqltuner non influisca negativamente su un'impostazione esistente.

Riepilogo

In questo articolo abbiamo spiegato come configurare un server di database MariaDB dopo averlo installato e protetto. Le variabili di configurazione elencate nella tabella sopra sono solo alcune impostazioni che potresti voler prendere in considerazione durante la preparazione del server per l'uso o durante la messa a punto in un secondo momento. Fare sempre riferimento alla documentazione ufficiale di MariaDB prima di apportare modifiche o fare riferimento ai nostri suggerimenti per l'ottimizzazione delle prestazioni di MariaDB:

Don' t Signorina: 15 utili suggerimenti per l'ottimizzazione e l'ottimizzazione delle prestazioni di MariaDB

Come sempre, non esitare a farci sapere se hai domande o commenti su questo articolo. Ci sono altre impostazioni del server che ti piace usare? Sentiti libero di condividere con il resto della community utilizzando il modulo di commento qui sotto.

Diventa un amministratore di sistema certificato Linux