GRY-Online.pl --> Archiwum Forum

Przenosiny baz MySQL między serwerami - jak najlepiej ?

18.04.2005
09:23
[1]

poltar [ Konsul ]

Przenosiny baz MySQL między serwerami - jak najlepiej ?

Muszę przenieść dwie bazy między dwoma serwerami. W chwili obecnej jedyne co mi przychodzi do glowy to eksport na jednym przy pomocy phpMyAdmin i import na drugim prezy użyciu tego samego narzedzia. Jest to jednak dosc klopotliwe. Czy istnieje inny, jakis szybszy sposob przy spelnieniu ponizszych warunkow:

- nie mam fizycznego dostepu do zadnego z tych serwerow,
- moge uzyskac skopiowanie dowolnych plikow z serwera przez jego admina na obszar dostepny przez ftp - chodzi mi o pliki baz danych,
- podobnie jest z serweren na ktory chce przeniesc te bazy - majac pliki moge je dac jego adminowi, ktory zrobi z nimi co trzeba.

Konkretyzujac pytanie : czy istnieje mozliwosc skopiowania tych baz poprzez fizyczne skopiowanie plikow ? Obie bazy zawieraja po kilkanascie tabel, wiekszych lub mniejszych.

A moze jest jeszcze jakis inny sposob? Np opcja migracji w samym mysql ? Nie jestem pewien czy mam dostep do konsoli mysql na tych serwerach, ale sadze ze to daloby sie zalatwic.

18.04.2005
10:08
[2]

Drak'kan [ Thráin Saphireslinger ]

poltar => Chyba najlepiej bedzie zalatwic to przez kopiowanie plikow. Bazy danych MySQL przechowywane sa w osobnych katalogach i wystarczy to ladnie spakowac, sciagnac oraz wgrac na drugi serwer. Nie powinno byc zadnych problemow z dzialaniem :) Osobiscie nie znam zadnych innych mozliwosci przeniesienia danych poza tym co podalem i tym co ty podales (przy czym twoje rozwiazanie przy duzych bazach danych mija sie z celem, bo moze po prostu nie zadzialac z uwagi na ograniczenia wysylanych plikow w PHP).

18.04.2005
11:37
[3]

hotDog [ Outsider ]

Ja znam taki sposób (w konsoli):

mysqldump


mysqldump to program, służący do "zrzucania" danych - czyli do robienia kopii zapasowych. Polecenie to jest przydatne w przypadku wykonywania kopii zapasowych podczas aktualizacji MySQL czy też przenoszenia danych na inny serwer.

Kilka przydatnych opcji:

--databases baza1 baza2... - zrzuca dane z baz, których nazwy podaliśmy w liście oddzielonymi spacjami.

--all-databases - to samo co wyżej ale dla wszystkich bazy.

--add-drop-table - dodaje DROP TABLE do skryptów tworzących tabele z backup-u (jak będziemy przywracać dane). Przydatne, kiedy np chcemy przywrócić już istniejącą tabelę. Spowoduje to najpierw jej usunięcie, a następnie utworzenie od nowa z danych, które mieliśmy w kopii zapasowej. Ogólnie, żeby uniknąć ewentualnych problemów z duplikatami wierszy, itp. warto tą opcję włączyć.

--no-create-info - w kopii nie zostanie zawarta informacja o tworzeniu tabel (nazwy tabel, typy pól, indeksy itp.). Przydatne, jeżeli chcemy zrobić kopię tylko danych, a nie całej struktury bazy.

--no-data - Ta opcja pozwala zapisać samą informację o strukturze bazy i tabel, nie zapisuje natomiast danych.

--opt nazwabazy - tworzy kopię bazy nazwabazy wraz z rozszerzonymi informacjami MySQL, blokowaniem tabel, itd. Chyba najczęściej stosowana opcja przy robieniu kopii zapasowych.


Należy pamiętać, że wynik polecenia mysqldump należy przekierować (>) do jakiegoś pliku. Podam może kilka przykładów użycia tego programu. Zrzucenie zawartości bazy baza1 do pliku baza1_bkp.sql:

# mysqldump -u mysql --databases baza1 > baza1_bkp.sql -p



Stworzenie kopii zapasowej struktury bazy (bez danych) baza2 i zapisanie jej w pliku baza2_str.sql:

# mysqldump -u mysql --databases --no-data baza2 > baza2_str.sql -p



Niezwykle przydatną opcją jest --opt omówiona wcześniej. Polecam jej stosowanie do wykonywania kopii całej bazy, włącznie ze strukturą tabel i samymi danymi. Aby stworzyć pełną kopię zapasową bazy baza1 i zapisać ją w pliku baza1_kopia.sql:

# mysqldump -u mysql --opt baza1 > baza1_kopia.sql -p



Przywracanie ba,z wykonanych poleceniem mysqldump wygląda tak:

# mysql -u mysql baza1 < baza1_kopia.sql -p



Inna metoda (w sumie różniąca się zapisem):

# mysql -u mysql -e 'source /sciezka_do_pliku/baza1_kopia.sql' baza1 -p




U mnie na XP'ku pliki wrzucał do Folderu: ../Documents and Settings/User_nazwa/

18.04.2005
21:58
[4]

poltar [ Konsul ]

dzieki za podpowiedz, faktycznie mysqldump byla lekarstwem na moje pytanie. Zadzialalo bardzo ladnie, mam teraz cala strukture wraz z danymi w 110 megowym pliku tekstowym. Jutro bede sie martwil jak sprawnie wrzucic to na nowy serwer. Choc w sumie to odpowiedz mam w poscie HotDoga, za co serdeczne dzieki :)

© 2000-2024 GRY-OnLine S.A.