Jak mogę przenieść bazę danych MySQL na inny dysk?

34

Używam MySQL 5.5 na komputerze lokalnym do analizy dużej ilości danych rządowych. Utworzyłem lokalną bazę danych, która znajduje się na moim domyślnym dysku (Win7 C: dysk). Chciałbym przechowywać dane na moim dysku E: dużym zewnętrznym dysku eSATA.

Jakie kroki powinienem podjąć?


źródło
nie możesz wyeksportować dB jako pliku sql, a następnie zapisać plik do e: to w przyszłości, jeśli chcesz przywrócić dB, możesz zaimportować ten plik
@tq - To nie zadziała. Chce zmienić katalog danych serwera MySQL. Jeśli wyeksportuje go i zaimportuje, nadal będzie na tym samym dysku!
Należy zachować ostrożność, przenosząc pliki bazy danych na dysk zewnętrzny. Będziesz musiał podłączyć go do komputera, w przeciwnym razie baza danych ulegnie awarii, ponieważ nie będzie w stanie znaleźć plików danych
Stephen Senkomago Musoke

Odpowiedzi:

35
  1. Zamknij mysql.
  2. Przenieś wszystkie pliki z bieżącego katalogu danych do nowej lokalizacji (sprawdź lokalizację w kroku 3 - datadirparametr).
  3. Zlokalizuj my.iniplik (znajduje się on w katalogu instalacyjnym mysql). Zmień datadirwartość parametru, aby wskazywała nową lokalizację.
  4. Uruchom mysql.

źródło
To dało mi błędy podczas próby uruchomienia mysql (problemy z uprawnieniami). Zdecydowałem się na rozwiązanie , które tu zamieszczam , i mam nadzieję, że pomoże komuś zaoszczędzić trochę czasu.
snapfractalpop
1
@snapfractalpop pytanie dotyczy systemu Windows
Adam
@adam windows jest wymieniony w treści pytania, ale nie jest oznaczony jako pytanie tylko dla systemu Windows, a okna nie są wymienione w nagłówku. Link zamieściłem w komentarzach, ponieważ możliwe jest, że inni użytkownicy nie korzystający z systemu Windows również mogą natknąć się na to pytanie.
snapfractalpop
Odkryłem, że muszę użyć, /a nie \ jako separatorów katalogów w ścieżce katalogu datadir. Używam WAMPserver na Windows 10.
Steve
Katalog ProgramData może być ukryty w eksploratorze plików. Myślałem, że nie istnieje, dopóki nie zmieniłem ustawienia, aby wyświetlić Ukryte pliki.
WestAce
6

Chociaż pytasz o okna, oto kilka dobrych wskazówek dla tych, którzy kończą tutaj szukając wskazówek dla Linuksa / Ubuntu:

Założenia:

  • Masz dane mysql na zewnętrznym napędzie / usb / alternatywnym /mountpoint/var/lib/mysql, być może z komputera, który zmarł lub starej instalacji
  • Chcesz przenieść go do nowej instalacji Ubuntu lokalnie /var/lib/mysql
  • Przystanek MySQL z:
    sudo /etc/init.d/mysql stop.
  • Zrób kopię zapasową bieżącego (czyste) MySQL danych z katalogu:
    sudo cp -Rp /var/lib/mysql /var/lib/mysql.backup.
  • Następnie skopiuj stary katalog danych ze starego dysku za pomocą:
    sudo cp -Rp /mountpoint/var/lib/mysql /var/lib/mysql
    gdzie mountpointjest ścieżka do montowania.
  • Teraz uruchom ponownie MySQL za pomocą:
    sudo /etc/init.d/mysql start

Przy odrobinie szczęścia MySQL powinien się zrestartować i powrócić do starych baz danych.

Źródło [email protected]

Cyryl
źródło
3
(!) to nie zadziała, ponieważ config nadal wskazuje starą lokalizację
ADOConnection
4

Rozwiązanie 1:

  1. Przede wszystkim wykonaj kopię zapasową danych za pomocą `mysqldump.
  2. Jeśli zainstalujesz Mysql Server z oficjalnego pakietu, możesz to zrobić, uruchamiając program MySQLINstanceConfig.exe z katalogu bin twojego serwera.
  3. Zaimportować dane

MySQLINstanceConfig.exe

Drugie rozwiązanie (niezalecane, ale działa na tym samym komputerze)

  1. Zatrzymaj serwer MySQL.
  2. Skopiuj dane z katalogu danych do nowego katalogu
  3. Otwórz plik my.cnf (w moim przypadku „C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ my.ini”)
  4. znajdź wiersz jak datadir = "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data \" i zmień ścieżkę do nowej lokalizacji
  5. Uruchom serwer

Od wersji 5.6 MySQLInstanceConfig.exe nie jest już rozpowszechniany. Ta funkcja jest zastępowana przez instalatora. http://bugs.mysql.com/bug.php?id=66306

rkosegi
źródło
Czy istnieje równoważny program Linux do przenoszenia danych
Ron Piggott
Po przeniesieniu danych przy drugim podejściu nie byłem w stanie uruchomić MariaDB (wersja 5.5). Po udzieleniu użytkownikowi usługi dostępu do nowego katalogu danych usługa rozpoczyna się i jestem gotów połączyć się z bazą danych. Jednak dostęp do dowolnego tabeli nadal kończy się niepowodzeniem: [ERROR] Cannot find or open table <db>/<table> from the internal data dictionary of InnoDB though the .frm file for the table exists.. Jak mogę się upewnić, że uprawnienia są ustawione poprawnie?
Bram
2

W systemie Windows, począwszy od instalatora MySQL 1.4.6 (2015-04-07) , lokalizację danych można określić w kluczu rejestru, który określa lokalizację my.inipliku, więc jeśli dane zostały początkowo zainstalowane w lokalizacji innej niż domyślna my.iniplik nie będzie C:\ProgramData\MySQL\MySQL Server x.x\.

Lokalizacjami wartości rejestru są (przynajmniej od MySQL 5.6):

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Server x.x\

Locationoznacza plik REG_SZ, w którym znajdują się pliki aplikacji MySQL; domyślnie:C:\Program Files\MySQL\MySQL Server x.x\

DataLocationoznacza punkt REG_SZ, w którym my.iniznajduje się folder ; domyślnie także:C:\Program Files\MySQL\MySQL Server x.x\

my.iniŚcieżka do pliku jest również zawarta w poleceniu service pod tym kluczem rejestru: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQLXXw ImagePath REG_EXPAND_SZwartości.

Domyślna wartość tego ciągu to: "C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server x.x\my.ini" MySQLXX

Więc sedno jest takie, że aby przenieść pliki danych w tym scenariuszu, musisz postępować zgodnie z krokami opublikowanymi przez @ITCuty z pewnymi dodatkami.

Oto pełne kroki:

  1. Zamknij mysql.
  2. Wyszukaj powyższą DataLocationwartość rejestru, aby znaleźć bieżącą my.inilokalizację pliku, a jeśli chcesz również przenieść my.iniplik, zaktualizuj DataLocationścieżkę i przenieś my.iniplik do tej nowej ścieżki.
  3. Jeśli zmieniasz lokalizację my.inipliku, musisz zaktualizować ścieżkę w kluczu rejestru polecenia serwisowego wymienionym powyżej.
  4. Otwórz my.iniplik, zlokalizuj datadirparametr. Przenieś pliki z tej datadirścieżki do ścieżki, w której mają się znajdować dane, a następnie zaktualizuj datadirparametr o tę nową ścieżkę.
  5. Uruchom mysql.
nextgentech
źródło