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.
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).
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/
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 :)