Guida alla risoluzione dei problemi del servizio MariaDB
MariaDB è un sistema di gestione di database relazionale open-source, ampiamente utilizzato in diversi scenari applicativi. Sebbene MariaDB solitamente funzioni in maniera affidabile, in alcune situazioni potresti incontrare problemi di inattività del servizio o problemi di prestazioni. Questo articolo descrive in dettaglio come risolvere i problemi del servizio MariaDB in ServBay, includendo problemi comuni, passaggi diagnostici e soluzioni. ServBay funziona su macOS e include diverse versioni di MariaDB, quindi in alcuni comandi è necessario specificare file di configurazione e directory specifiche della versione.
Problemi comuni e soluzioni
1. Il servizio MariaDB non si avvia
Cause possibili
- File di configurazione errato
- Porta occupata
- Problemi di permessi
Soluzioni
Controllare il file di configurazione: Assicurati che la sintassi del file di configurazione
my.cnf
sia corretta, il percorso è:bash/Applications/ServBay/etc/mariadb/11.3/my.cnf
1Usa il seguente comando per verificare il file di configurazione:
bashmysqld --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf --validate-config
1Controllare l'occupazione della porta: Assicurati che la porta utilizzata da MariaDB (predefinita 3306) non sia occupata da altri processi. Usa il seguente comando per controllare l'occupazione della porta:
bashlsof -i :3306
1Controllare i permessi: Assicurati che i permessi della directory dei dati e dei file di configurazione di MariaDB siano corretti. Usa i seguenti comandi per controllare i permessi:
bashls -l /Applications/ServBay/db/mariadb/11.3 ls -l /Applications/ServBay/etc/mariadb/11.3/my.cnf
1
2Avviare il servizio: Prova a riavviare il servizio MariaDB:
bashservbayctl restart mariadb 11.3
1
2. Impossibile connettersi a MariaDB
Cause possibili
- Servizio MariaDB non in esecuzione
- Firewall che blocca la connessione
- Problemi di permessi utente
Soluzioni
Controllare lo stato del servizio: Assicurati che il servizio MariaDB sia in esecuzione:
bashservbayctl status mariadb 11.3
1Controllare le impostazioni del firewall: Assicurati che il firewall consenta l'accesso alla porta di MariaDB (predefinita 3306):
bashsudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/ServBay/bin/mysqld sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/ServBay/bin/mysqld
1
2Controllare i permessi utente: Assicurati che l'utente abbia sufficienti permessi per connettersi al database:
sqlSHOW GRANTS FOR 'your_username'@'localhost';
1Testare la connessione: Usa il seguente comando per testare la connessione:
bashmysql --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p -h localhost -P 3306
1
3. Problemi di prestazioni
Cause possibili
- Query non ottimizzate
- Configurazione cache inadeguata
- Mancanza di indici
Soluzioni
Ottimizzare le query: Usa
EXPLAIN
per analizzare le prestazioni delle query e ottimizzarle di conseguenza:sqlEXPLAIN SELECT * FROM your_table_name WHERE column_name = 'value';
1Regolare la cache: Regola le impostazioni della cache nel file
my.cnf
, ad esempio:[mysqld] query_cache_size = 64M innodb_buffer_pool_size = 1G
1
2
3Creare indici: Assicurati che le colonne utilizzate frequentemente nelle query abbiano gli indici:
sqlCREATE INDEX idx_column_name ON your_table_name(column_name);
1
4. Crash del database
Cause possibili
- Guasto hardware
- Conflitti software
- Problemi di configurazione
Soluzioni
Controllare i log degli errori: Controlla i log degli errori di MariaDB per trovare la causa specifica del crash. Il percorso dei log degli errori è:
bash/Applications/ServBay/logs/mariadb/11.3.err
1Riparare il database: Usa lo strumento
mysqlcheck
per riparare il database:bashmysqlcheck --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p --auto-repair --all-databases
1Ripristinare i dati: Se i file del database sono danneggiati, ripristina i dati dal backup. Il percorso del file di backup è:
bash/Applications/ServBay/backup/mariadb/11.3
1
5. Problemi di backup e ripristino
Cause possibili
- File di backup danneggiato
- Comando di ripristino errato
Soluzioni
Controllare il file di backup: Assicurati che il file di backup sia integro e non danneggiato. Usa il seguente comando per controllare la dimensione e l'integrità del file di backup:
bashls -lh /Applications/ServBay/backup/mariadb/11.3/your_backup.sql
1Ripristinare correttamente il database: Usa lo strumento
mysql
per ripristinare correttamente il database:bashmysql --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p your_database < /Applications/ServBay/backup/mariadb/11.3/your_backup.sql
1
Problema specifico: ib_logfile0 was not found
e InnoDB: Missing FILE_CHECKPOINT(47594) at 47594
Cause possibili
- Bug in MariaDB 11.5.1
Log degli errori
240618 22:37:46 mysqld_safe Starting mariadbd daemon with databases from /Applications/ServBay/db/mariadb/11.5
2024-06-18 22:37:46 0 [Note] Starting MariaDB 11.5.1-MariaDB-log source revision 65079ece42f383bdeb9b3f913a833a6f0123919d as process 3323
2024-06-18 22:37:46 0 [Warning] Setting lower_case_table_names=2 because file system for /Applications/ServBay/db/mariadb/11.5/ is case insensitive
2024-06-18 22:37:47 0 [Warning] --innodb-file-per-table is deprecated and will be removed in a future release
2024-06-18 22:37:47 0 [Note] InnoDB: Compressed tables use zlib 1.3.1
2024-06-18 22:37:47 0 [Note] InnoDB: Number of transaction pools: 1
2024-06-18 22:37:47 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2024-06-18 22:37:47 0 [Note] InnoDB: Initializing buffer pool, total size = 4.000GiB, chunk size = 64.000MiB
2024-06-18 22:37:47 0 [Note] InnoDB: Completed initialization of buffer pool
2024-06-18 22:37:47 0 [ERROR] InnoDB: File /Applications/ServBay/db/mariadb/11.5/ib_logfile0 was not found
2024-06-18 22:37:47 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2024-06-18 22:37:47 0 [Note] InnoDB: Starting shutdown...
2024-06-18 22:37:47 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2024-06-18 22:37:47 0 [Note] Plugin 'FEEDBACK' is disabled.
2024-06-18 22:37:47 0 [Note] Plugin 'wsrep-provider' is disabled.
2024-06-18 22:37:47 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2024-06-18 22:37:47 0 [ERROR] Aborting
240618 22:37:48 mysqld_safe mysqld from pid file /Applications/ServBay/tmp/mariadb-11.5.pid ended
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
240618 23:22:28 mysqld_safe Starting mariadbd daemon with databases from /Applications/ServBay/db/mariadb/11.5
2024-06-18 23:22:28 0 [Note] Starting MariaDB 11.5.1-MariaDB-log source revision 65079ece42f383bdeb9b3f913a833a6f0123919d as process 6667
2024-06-18 23:22:28 0 [Warning] Setting lower_case_table_names=2 because file system for /Applications/ServBay/db/mariadb/11.5/ is case insensitive
2024-06-18 23:22:29 0 [Warning] --innodb-file-per-table is deprecated and will be removed in a future release
2024-06-18 23:22:29 0 [Note] InnoDB: Compressed tables use zlib 1.3.1
2024-06-18 23:22:29 0 [Note] InnoDB: Number of transaction pools: 1
2024-06-18 23:22:29 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2024-06-18 23:22:29 0 [Note] InnoDB: Initializing buffer pool, total size = 4.000GiB, chunk size = 64.000MiB
2024-06-18 23:22:29 0 [Note] InnoDB: Completed initialization of buffer pool
2024-06-18 23:22:29 0 [ERROR] InnoDB: Missing FILE_CHECKPOINT(47594) at 47594
2024-06-18 23:22:29 0 [ERROR] InnoDB: Log scan aborted at LSN 47594
2024-06-18 23:22:29 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2024-06-18 23:22:29 0 [Note] InnoDB: Starting shutdown...
2024-06-18 23:22:29 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2024-06-18 23:22:29 0 [Note] Plugin 'FEEDBACK' is disabled.
2024-06-18 23:22:29 0 [Note] Plugin 'wsrep-provider' is disabled.
2024-06-18 23:22:29 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2024-06-18 23:22:29 0 [ERROR] Aborting
240618 23:22:29 mysqld_safe mysqld from pid file /Applications/ServBay/tmp/mariadb-11.5.pid ended
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Soluzioni
Consulta l'articolo Modifica delle impostazioni di MariaDB, trova il file my.cnf
, e quindi segui i passaggi dettagliati qui sotto:
Aggiungere
innodb_force_recovery = 6
nella sezione[mysqld]
dimy.cnf
Modifica il file di configurazione
my.cnf
, trova[mysqld]
, e aggiungi la seguente riga:iniinnodb_force_recovery = 6
1Avviare MariaDB
Usa il seguente comando per avviare MariaDB:
bashservbayctl start mariadb 11.5
1Eseguire il backup di MariaDB
Usa il comando
mysqldump
per eseguire il backup di tutti i database:bashmysqldump -uroot -p --all-databases --opt > /Applications/ServBay/backup/mariadb/11.5/mariadb_backup.sql
1Disabilitare il servizio MariaDB
Nel pannello di gestione di ServBay, disabilita il servizio MariaDB 11.5.
Rimuovere
innodb_force_recovery = 6
damy.cnf
Modifica il file di configurazione
my.cnf
e rimuovi la seguente riga:iniinnodb_force_recovery = 6
1Rinominare la directory
11.5
Rinomina la directory dei dati di MariaDB
11.5
in11.5.bak
:bashmv /Applications/ServBay/db/mariadb/11.5 /Applications/ServBay/db/mariadb/11.5.bak
1Sostituire con un'altra versione di MariaDB
Sostituisci con MariaDB 11.5.0, che non presenta problemi, o con altre versioni come 11.3 o 11.4.
Ripristinare il backup di MariaDB
Usa il comando
mysql
per ripristinare il database:bashmysql -uroot -p < /Applications/ServBay/backup/mariadb/11.5/mariadb_backup.sql
1
Conclusione
MariaDB è un sistema di gestione di database potente e flessibile, ma durante l'uso potresti incontrare vari problemi. Questo articolo ti aiuta a comprendere come risolvere i problemi del servizio MariaDB, inclusi la diagnosi e le soluzioni per i problemi comuni. Speriamo che questo articolo ti sia utile; se hai domande o hai bisogno di ulteriore assistenza, non esitare a contattarci.