Jak wgrać dużą bazę danych?



Czasami zdarza się sytuacja, że jesteśmy zmuszeni przenieść bazę danych z jednego serwera na drugi. Nie stanowi to problemu jeśli baza danych nie jest większych rozmiarów. W jaki sposób dokonać tego w sytuacji kiedy baza danych zawiera znaczną ilość danych?

Jeżeli mamy dostęp do konsoli serwera możemy to wykonać w następujący sposób. Najpierw logujemy się do serwera z którego chcemy skopiować bazę danych (np. poprzez ssh). Po zalogowaniu się, z poziomu konsoli wydajemy następujące polecenie:

mysqldump -u login -p nazwa_bazy -h nazwa_hosta > kopiabazy.sql

gdzie,

login – nazwa użytkownika który ma uprawnienia do kopiowanej bazy
nazwa_bazy – nazwa bazy danych, którą będziemy kopiować
nazwa_hosta – nazwa serwera MySQL (najczęściej jest to localhost)
kopiabazy.sql – nazwa pliku do którego zostanie „zrzucona” zawartość bazy (proszę pamiętać o rozszerzeniu .sql)

Następnie kopiujemy bazę na nasz serwer. Jeżeli na drugim serwerze mamy również dostęp do konsoli, transfer bazy możemy wykonać pomiędzy serwerami z pominięciem naszego lokalnego komputera. Do tego celu użyjemy protokołu scp.

Składnia takiego polecenia wygląda następująco:

$ scp kopiabazy.sql nazwa_uzytkownika@zdalnyhost.pl:/jakis/zdalny/katalog

Małe wyjaśnienie:
Oczywiście żeby ten zapis zdziałał musimy być zalogowani na konsoli na serwerze na którym wykonywaliśmy kopię bazy danych (plik kopiabazy.sql). Jeżeli znajdujemy się poza folderem, w którym znajduje się kopia bazy musimy wskazać wtedy pełną ścieżkę do tego pliku (np. /home/user/kopiabazy.sql)
nazwa_uzytkownika@zdalnyhost.pl – podajemy dane niezbędne do zalogowania się na serwer na który baza będzie kopiowana (oczywiście warunkiem koniecznym jest posiadanie dostępu do powłoki – konsoli).
/jakis/zdalny/katalog – podajemy miejsce do którego ma być skopiowana baza danych (może to być np. folder /tmp)

Jeżeli wszystko zostało dobrze wpisane zostaniemy poproszeni o podanie hasła a następnie plik z bazą danych zostanie skopiowany na drugi serwer. Oczywiście pod warunkiem, że wpisane hasło jest prawidłowe.

Po skopiowaniu bazy danych możemy się zalogować na serwer na który baza została skopiowana i z poziomu konsoli wpisujemy:

mysql -u login -p -h nazwa_hosta nazwa_bazy < kopiabazy.sql

Wyjaśnienie:
login – nazwa użytkownika dla którego będziemy wgrywać bazę danych
nazwa_hosta – nazwa serwera MySQL (najczęściej jest to localhost)
nazwa_bazy – nazwa bazy do której będziemy wgrywać zawartość skopiowanej bazy (baza musi być wcześniej utworzona)
kopiabazy.sql – plik skopiowanej bazy danych. Jeżeli znajdujemy się poza folderem, w którym ten plik jest umieszczony należy podać pełną ścieżkę do tego pliku.

Jeśli zostało wszystko dobrze wpisane zostaniemy poproszeni o hasło dla użytkownika, dla którego będziemy wgrywać bazę a następnie zawartość bazy zostanie wgrana.

W następnym howto przedstawimy rozwiązanie kiedy nie mamy dostępu do konsoli serwera.

Tags: , , ,

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Comments are closed.