Jak przywrócić bazę danych MySQL z plików fizycznych?

12

Właśnie przeinstalowałem system, nie zrobiłem kopii zapasowej zrzutu, ale nadal mam fizyczny folder moich poprzednich instalacji MySQL.

Czy można go użyć do przywrócenia i zaktualizowania mojej obecnej konfiguracji?

Jan
źródło

Odpowiedzi:

11

Jest to możliwe, ale nie sugerowane. Jeśli miałbym spróbować, oto jak bym to zrobił.

  1. Zainstaluj mysql, skonfiguruj jak najbliżej starego serwera lub po prostu użyj tej samej konfiguracji. Upewnij się, że się uruchomi, uruchomi ponownie i możesz się zalogować. Teraz wyłącz mysql.

  2. Przenieś starą instalację z drogi za pomocą mv /var/lib/mysql /var/lib/mysql.orig

  3. rsync lub skopiuj nowe pliki na miejsce. sudo rsync -av /old/mysql/ /var/lib/mysql/Sugeruję utrzymanie oryginalnych plików w ich bieżącym stanie, na wypadek, gdyby to nie zadziałało.

  4. sudo chown -R mysql: /var/lib/mysqla następnie uruchom mysql. Sprawdź dzienniki, upewnij się, że wszystko wygląda dobrze, a następnie zaloguj się do MySQL. Przeszukuj, aby mieć pewność, że Twoje dane tam są.

Zakładając, że wszystko poszło gładko, powinieneś być ustawiony. Teraz od razu zrób poprawną kopię MySQL, aby następnym razem nie robić takich bzdur.

kashani
źródło
1
Byłbym ostrożny, aby wykonać krok 2 powyżej przed krokiem 1. Chcesz się upewnić, że instalacja i uruchomienie mysqld nie zastąpi starej systemowej bazy danych.
malcolmpdx
Trafne spostrzeżenie. Zakładałem, że / var / lib / mysql nie pochodzi z oryginalnej instalacji. W każdym razie tak, zanim zaczniesz, upewnij się, że oryginalne pliki nie znajdują się w katalogu / var / lib / mysql. Chcesz zacząć od nowej instancji Mysql, zanim zaczniesz ładować oryginalne dane.
kashani
dziękuję Lekko zmodyfikowałem krok, aby dostosować się do środowiska Zend Server CE i MacOS i działa!
John
@Kashani postępowałem zgodnie z tymi instrukcjami (centos), ale na nowym serwerze wyświetla się tabela, ale dane i tabela nie… żadnych pomysłów? widzę wszystkie tabele w folderze, których po prostu nie pokazują (wygląda na to, że to odpowiedni zestaw znaków)
K2xL
2
@ K2xL Nie jestem pewien, co widzisz. Jeśli utworzysz nowe pytanie ze szczegółami tego, co widzisz i jak to zrobiłeś, chętnie się temu przyjrzę. Należy pamiętać, że powyższa metoda działa tylko dla całej instalacji Mysql, a nie dla pojedynczej bazy danych, ponieważ tabele Innodb przechowują dane w głównych plikach ibdata, niezależnie od tego, czy używasz tabeli innodb_file_per_table, czy nie.
kashani