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.