Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] backup części bazy danych
Forum PHP.pl > Forum > Przedszkole
gawar
Cześć, Szukam pomysłu na wyjęcie z bazy danych tylko części danych i zapisaniu ich do pliku .sql łącznie ze strukturą bazy. Coś takiego jak wersja demo tylko do podglądu z ograniczonym widokiem. Chciałbym aby części tabel i pół z "dużej" bazy ten backup nie uwzględniał. Zależy mi na tym, żeby było to proste w obsłudze. Muszę jak najbardziej to zautomatyzować. Jak już będę miał taki plik to wrzucam go na serwer i co 24 godziny ten plik by nadpisywał tą ograniczoną wersje systemu. Ma ktoś jakiś pomysł / sugestie?
leonpro778
Mi przychodzą do głowy dwa rozwiązania.

Pierwszy to:
  1. SELECT * INTO OUTFILE 'nazwa_pliku' FROM 'nazwa_tabeli' LIMIT ile_rekordow


Potem ładujesz do swojej bazy demo poprzez LOAD DATA
Tutaj musisz mieć już "czystą" bazę demo (w sensie strukturę).


Drugi:
Korzystamy z funkcji system() w PHP i bawimy się standardowo z mysqldump. To chyba bardziej skomplikowany sposób.
Pyton_000
A nie możesz przygotować całej bazy demo i zrobić jej dumpa ?
gawar
Najfajniej chyba by było przygotować całą bazę demo. Tylko jak? Każda modyfikacja na jakiś danych to wtedy bym musiał tą drugą bazę aktualizować, czyli ciągły zapis do dwóch baz? Czy jest na to jakiś inny sposób?

Przy load data znów będzie spora rzeźba przy imporcie do różnych tabel różnych danych. Pewnie najprościej by było jednym zapytaniem wyciągnąć dane z jednej tabeli drugim z drugiej i analogicznie je ładować tak?

Odświeżam trochę temat bo przygotowałem rozwiązanie na podstawie INTO OUTFILE ale okazało się że jest ono zablokowane na hostingu z którego korzystam. Jest jakaś inna metoda pozwalająca wyjąć część danych z jednej bazy i na jej podstawie uaktualniać drugą? Mam wykupiony hosting więc możliwości mam trochę ograniczone.
sabat24
Możesz to obejść za pomocą prostego skryptu w php i wersji brutal force. Łączysz się w nim z dwoma bazami jednocześnie (zakładam, że są na jednym serwerze albo mają dostęp zewnętrzny). Co 24h robisz DROP tabel wersji demo, po czym w pętli:
1. pobierz listę tabel aktualnej bazy
2. dla każdej z tabel
2a) pobierz strukturę i indexy
2b) stwórz tabelę o tej strukturze w bazie DEMO i dodaj indexy
2c) pobierz X rekordów z aktualnej bazy
2d) insert wszystkiego do bazy DEMO

Kwestia tylko spójności danych, bo jak wybierzesz na sztywno 20 rekordów z jednej tabeli, to może się okazać, że uciąłeś jakieś ważne dane, ale to już kwestia, jak to masz zorganizowane.

Prosty przykład z sieci: https://davidwalsh.name/backup-mysql-database-php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.