sql >> Databasteknik >  >> RDS >> Mysql

Hur man återställer MySQL-databas från .myd-, .myi-, .frm-filer

Om dessa är MyISAM-tabeller kan du lägga in .FRM-, .MYD- och .MYI-filerna i en databaskatalog (t.ex. /var/lib/mysql/dbname ) kommer att göra den tabellen tillgänglig. Det behöver inte vara samma databas som de kom från, samma server, samma MySQL-version eller samma arkitektur. Du kan också behöva ändra ägarskap för mappen (t.ex. chown -R mysql:mysql /var/lib/mysql/dbname )

Observera att behörigheter (GRANT , etc.) är en del av mysql databas. Så de kommer inte att återställas tillsammans med borden; du kan behöva köra lämplig GRANT uttalanden för att skapa användare, ge åtkomst, etc. (Återställer mysql databas är möjlig, men du måste vara försiktig med MySQL-versioner och alla nödvändiga körningar av mysql_upgrade verktyg.)

Egentligen behöver du förmodligen bara .FRM (tabellstruktur) och .MYD (tabelldata), men du måste reparera tabellen för att bygga om .MYI (index).

Den enda begränsningen är att om du nedgraderar, är det bäst att du kontrollerar versionskommentarerna (och förmodligen kör reparationstabellen). Nyare MySQL-versioner lägger så klart till funktioner.

[Även om det borde vara uppenbart, om du blandar och matchar tabeller, är integriteten i relationerna mellan dessa tabeller ditt problem; MySQL bryr sig inte, men din applikation och dina användare kanske. Den här metoden fungerar inte alls för InnoDB-tabeller. Bara MyISAM, men med tanke på filerna du har så har du MyISAM]



  1. Enkel parametrering och triviala planer — del 3

  2. Kolumn beräknad från en annan kolumn?

  3. En översikt över VACUUM-bearbetning i PostgreSQL

  4. Kunskap om att återställa raderade poster i SQL Server