Ieri am dat de o problema pe un server, dintr-o data baza de date MySql nu mai pornea nicicum. Am dat reboot la server, nu s-a rezolvat. Am inceput sa ma uit prin loguri si am vazut unele erori ciudate care nu le-am mai vazut de cand ma ocup de servere.
140928 21:04:43 [ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it
140928 21:04:43 [ERROR] Can’t open and lock privilege tables: Table ‘mysql.servers’ doesn’t existInnoDB: Serious error! InnoDB is trying to free page 69637
InnoDB: though it is already marked as free in the tablespace!
InnoDB: The tablespace free space info is corrupt.
Am tot incercat sa repar si pana la urma singura solutie sa recuperez datele a fost urmatoarea:
- Opreste mysqld
- Backup /var/lib/mysql/ib*
- Adauga linia urmatoare in /etc/my.cnf: innodb_force_recovery = 4
- Restart la mysqld
- Fa un dump mare cu toate bazele de date – mysqldump -A > dump.sql
- Sterge toate folderele din /var/lib/mysql
- Opreste din nou mysqld
- Scoate sau comenteaza linia ce ai adaugat-o la punctul 3.
- Restarteaza mysqld si vezi daca iti zice un mesaj de genul ca regenereaza baza de date.
- Restaureaza bazele de date din dump.sql mysql < dump.sql
Singuru dezavantaj aici este ca trebuie creeati userii din nou, am stat putin ieri sa vad la toate site-urile ce useri trebuie facuti si la ce tabela trebuie sa aiba access. Datele sunt intacte din cate am vazut.
Nu stiu cum s-a produs eroarea asta si sper sa nu se mai produca.
Atentie! Atunci cand pui optiunea innodb_force_recovery in my.cnf s-ar putea sa ai falsa impresie ca totul merge OK si nu mai trebuie sa faci nimic (at least I did that). NU ESTE ASA! In recovery mode poti citi datele dar nu poti scrie nimic, deci baza de date iti va fii readonly si nu cred ca ai vrea asta ( eu tot incercam ca fraieru sa ma loghez pe WP si nu mergea pana mi-am dat seama de asta ).
Lasă un răspuns