# I file di log di MariaDB: come funziona il sistema di log

I file di log di MariaDB offrono funzionalità avanzate per il monitoraggio e l’ottimizzazione delle istanze del database. In questa guida ti presentiamo i principali tipi di log disponibili, come configurarli e come attivarli.

## Quali sono i file di log disponibili in MariaDB?

[MariaDB](https://www.ionos.it/digitalguide/server/know-how/cose-mariadb/) include **quattro principali** tipi di log, ognuno dei quali registra un aspetto diverso del funzionamento del database:

### Error log

L’error log, o registro degli errori, **documenta eventi critici** come l’avvio e l’arresto del server, arresti anomali o altri problemi gravi. È attivo per impostazione predefinita ed è utile per diagnosticare malfunzionamenti del server.

### General query log

Il registro generale delle query **memorizza tutte le connessioni al server e ogni comando SQL eseguito**. È indicato per individuare errori e monitorare le attività dell’utente.

### Binary log

Il log binario **traccia tutte le modifiche apportate al database**, comprese le operazioni sui dati e le modifiche alla struttura. È fondamentale per la replica e per i ripristini point-in-time.

### Slow query log

Il log delle query lente **elenca le query SQL che superano un certo tempo di esecuzione**. È un valido aiuto per identificare i colli di bottiglia nelle prestazioni e ottimizzare le query lente.

## Come configurare e usare i registri di MariaDB: guida completa

Ora ti mostriamo come attivare, configurare e consultare [file di log](https://www.ionos.it/digitalguide/online-marketing/analisi-web/log-il-registro-eventi-dei-processi-informatici/): error log, general query log, binary log e slow query log, con indicazione della posizione dei file.

### Requisiti

- Un server con una versione aggiornata di **Ubuntu** o altra distribuzione Linux
- Un account utente con [permessi sudo](https://www.ionos.it/digitalguide/server/configurazione/comando-sudo-su-linux/)
- **Nessuna installazione parallela di MySQL**, per evitare conflitti di configurazione
- Conoscenze di base in SQL

### Primo passaggio: visualizzare e configurare il registro degli errori

Per prima cosa devi assicurarti che [MariaDB sia installato](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/come-installare-mysql-o-mariadb/). Per farlo, esegui il seguente comando:

```bash
sudo apt update
sudo apt install mariadb-server
```

Questo comando aggiorna prima l’elenco dei pacchetti del sistema e poi installa il server MariaDB.

Per collegarti al database MariaDB, esegui il seguente comando:

```bash
sudo mariadb
```

Si apre così la console SQL con privilegi amministrativi.

Nel prossimo passaggio occorre controllare dove MariaDB scrive i messaggi di errore. A tale scopo si utilizza l’istruzione SQL:

```sql
SHOW VARIABLES LIKE '%log_error%';
```

Se il valore di `log_error` è vuoto, i messaggi di errore vengono scritti nel registro di sistema (`syslog`).

Per visualizzare questo registro, utilizza il seguente comando:

```bash
journalctl -u mariadb.service
```

Questo fornisce un **elenco cronologico dei messaggi di sistema** generati dal servizio MariaDB. È utile per indagare su errori di avvio o altri eventi critici.

Se desideri utilizzare un **file di log degli errori personalizzato**, è necessario modificare il file di configurazione di MariaDB. È possibile aprirlo con un editor di testo come nano:

```bash
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
```

Cerca la sezione `[mysqld]` e aggiungi la seguente riga o rimuovi il commento:

```txt
log_error = /var/log/mariadb/error.log
```

Ora è necessario assicurarsi che la directory specificata esista e disponga dei permessi di accesso corretti. A tal fine, esegui i seguenti comandi:

```bash
sudo mkdir /var/log/mariadb
sudo chown mysql:mysql /var/log/mariadb
```

I comandi creano la directory e la impostano sull’utente e sul gruppo `mysql`, in modo che la funzione di registrazione di MariaDB possa scrivere al suo interno.

Riavvia quindi il servizio MariaDB affinché le modifiche alla configurazione abbiano effetto:

```bash
sudo systemctl restart mariadb
```

Infine, puoi visualizzare il registro degli errori:

```bash
sudo cat /var/log/mariadb/error.log
```

Qui trovi informazioni sugli orari di avvio, avvisi o problemi relativi ai plugin.

### Secondo passaggio: attivare il general query log

Per verificare lo stato attuale, apri la console SQL e inserisci il seguente comando:

```sql
SHOW VARIABLES LIKE '%general%';
```

Qui puoi vedere se il registro delle query generali (general query log) è attivo (`general_log = ON`) e dove è salvato (`general_log_file`).

Per attivare in modo permanente questi registri, modifica nuovamente il file di configurazione:

```bash
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
```

Aggiungi le seguenti righe nella sezione `[mysqld]`:

```ini
general_log = 1
general_log_file = /var/log/mariadb/general-query.log
```

Quindi riavvia il servizio:

```bash
sudo systemctl restart mariadb
```

Consulta il registro con:

```bash
sudo cat /var/log/mariadb/general-query.log
```

Qui trovi tutte le query e le connessioni, con relative marche temporali. In questo modo puoi determinare quando sono state inviate le singole richieste.

### Terzo passaggio: attivare il binary log

Per configurare il log binario, apri lo stesso file di configurazione utilizzato in precedenza:

```bash
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
```

Aggiungi i seguenti parametri nella sezione `[mysqld]`:

```txt
log_bin = /var/log/mariadb/binary.log
server_id = 1
binlog_format = ROW
```

Il `server_id` è importante per la replica (ogni server necessita di un ID univoco). Con `binlog_format = ROW`, ogni modifica dei dati a livello di riga viene registrata nei log MariaDB.

Riavvia il server:

```bash
sudo systemctl restart mariadb
```

Per verificare se il log binario (binary log) è attivo, inserisci nella console SQL:

```sql
SHOW BINARY LOGS;
```

Qui vengono visualizzati i file di log binari attivi con il nome del file e le dimensioni.

Per leggere il contenuto di un file, utilizza il seguente comando:

```bash
sudo mysqlbinlog /var/log/mariadb/binary.000001
```

Qui sono elencati in ordine cronologico tutti i comandi SQL di modifica.

### Quarto passaggio: registrare le query lente (slow query log)

Modifica ancora il file di configurazione:

```bash
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
```

Aggiungi quanto segue:

```txt
slow_query_log = 1
slow_query_log_file = /var/log/mariadb/slow-query.log
long_query_time = 10
```

In questo caso, “long\_query\_time = 10” significa che tutte le query che richiedono più di dieci secondi vengono registrate.

Riavvia MariaDB:

```bash
sudo systemctl restart mariadb
```

Controlla che il registro sia attivo:

```sql
SHOW VARIABLES LIKE '%slow_query_log%';
```

Esegui una query di prova volutamente lenta:

```sql
SELECT SLEEP(12);
```

Questo comando forza il server ad attendere dodici secondi. Dopodiché, dovrebbe comparire nel log delle query lente.

Infine, è possibile visualizzare il registro:

```bash
sudo cat /var/log/mariadb/slow-query.log
```

Al suo interno trovi informazioni su tempi di esecuzione, query coinvolte e marche temporali.

Se desideri approfondire l’argomento, consulta la nostra guida sull’[analisi dei file di log](https://www.ionos.it/digitalguide/online-marketing/analisi-web/analisi-dei-log-statistiche-sugli-utenti-grazie-ai-log/).


This is a markdown version of: [https://www.ionos.it/digitalguide/hosting/tecniche-hosting/file-di-log-di-mariadb/](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/file-di-log-di-mariadb/) for AI/LLM consumption.