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.