Hvis du har slettet filerne ibdata1
, ib_logfile0
og ib_logfile1
i MySQL, kan det føre til tab af data og problemer med at få MySQL til at genkende og indlæse tabellerne igen. Her er nogle trin, du kan følge for at forsøge at løse problemet:
Før du foretager nogen ændringer, skal du stoppe MySQL-tjenesten for at undgå yderligere skader:
sudo systemctl stop mysql
Det er vigtigt at tage en sikkerhedskopi af dine nuværende datafiler, hvis de stadig er tilgængelige:
sudo cp -r /var/lib/mysql /var/lib/mysql_backup
Slet de beskadigede InnoDB-filer, hvis de stadig er til stede:
sudo rm /var/lib/mysql/ibdata1 /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile1
Rediger MySQL-konfigurationsfilen (my.cnf eller my.ini) for at bruge separate tablespaces for hver tabel:
[mysqld]
innodb_file_per_table=1
innodb_force_recovery=1
Start MySQL-tjenesten igen:
sudo systemctl start mysql
Hvis MySQL starter korrekt, skal du eksportere dine databaser og derefter importere dem igen:
mysqldump -u root -p --all-databases > all_databases.sql
mysql -u root -p < all_databases.sql
Efter at have eksporteret og importeret databaserne, skal du fjerne innodb_force_recovery
fra MySQL-konfigurationsfilen og genstarte tjenesten:
[mysqld]
innodb_file_per_table=1
sudo systemctl restart mysql
Kontroller, om dine tabeller nu er synlige og fungerer korrekt:
mysql -u root -p
SHOW TABLES;
Bemærk, at disse trin muligvis ikke altid gendanner dine data fuldstændigt, især hvis der er sket alvorlig korruption. Det er altid en god praksis at tage regelmæssige sikkerhedskopier for at undgå datatab.
Har du brug for hjælp til MySQL-opgaver? Med Handyhand kan du nemt oprette din opgave gratis og få bud fra professionelle inden for få minutter. Uanset om det drejer sig om databaseadministration, forespørgsler eller optimering, kan du finde den rette hjælp til at løse dine udfordringer.