MariaDB error InnoDB Danneggiato NextCloud

Oggi decriviamo la procedura per il rispristino del database NextCloud danneggiato ad esempio per un arresto anomalo del sistema

Capita pultroppo spesso che il sistema si danneggi e che mariaDB non riesca più a ripartire a causa del danneggiamento di InnoDB.

Una procedura per tentare il rispristino è la seguente

Facciamo partire mariadb in recovery mode

aggiungiamo queste righe a my.cnf

nano /etc/my.cnf

port = 8881
innodb_force_recovery=6
innodb_purge_threads=0

systemctl start mariadb.service

Innodb_force_recovery ha una scala che va da 1 a 6 se come nel mio caso siete nella situazione peggiore ovvero 6 dopo aver effettuato lo start di mariadb service dovrete aggiungere yn my.cnf [client] prima dei comandi precedenti ma solo dopo aver fatto ripartire il servizio e sensa riavviarlo nuovamente.

[client]

port = 8881
innodb_force_recovery=6
innodb_purge_threads=0

a questo punto eseguite il dump

mysqldump –skip-lock-tables -A > alldb.sql

Ora spegniamo MariaDB

mysqladmin shut


Opzione 1

Creiamo una cartella vuota per mysql

mv /var/lib/mysql /var/lib/mysql.old
mkdir /var/lib/mysql

Adesso proviamo a ripristinare i db vuoti

mysql_install_db


Opzione 2

Se questa opzione fallisce rimuoviamo completamente mariadDB

Assicuriamoci di aver salvato in /var/lib/mysql.old i vecchi db

ls /var/lib/mysql.old

assicuriamoci di aver salvato il dump

ls alldb.sql

a questo punto rimuoviamo mariadb

yum remove mariadb mariadb-server
rm -rf /var/lib/mysql
rm /etc/my.cnf

Reinstalliamo MariaDB

yum -y install mariadb-server mariadb
systemctl start mariadb.service
systemctl enable mariadb.service
mysql_secure_installation (ricordarsi di inserire la stessa password precedente)

Ripristiniamo i database

mysql < alldb.sql -u root -p

Riavviamo il servizio

systemctl restart mariadb.service

Spero di esservi stato utile.

Tags: