Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] backup części bazy danych, backup części bazy
gawar
post 13.07.2017, 10:09:33
Post #1





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 26.10.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
leonpro778
post 13.07.2017, 10:25:03
Post #2





Grupa: Zarejestrowani
Postów: 146
Pomógł: 19
Dołączył: 1.03.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Pyton_000
post 13.07.2017, 10:54:15
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


A nie możesz przygotować całej bazy demo i zrobić jej dumpa ?
Go to the top of the page
+Quote Post
gawar
post 23.08.2017, 10:05:37
Post #4





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 26.10.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
sabat24
post 23.08.2017, 10:56:52
Post #5





Grupa: Zarejestrowani
Postów: 175
Pomógł: 26
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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

Ten post edytował sabat24 23.08.2017, 10:59:47
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 16:37