CSV i WYBIERZ DO POZYCJI
http://dev.mysql.com/doc/refman /5.7/pl/wybierz-do.html
SELECT ... INTO OUTFILE zapisuje wybrane wiersze do pliku. Można określić terminatory kolumn i wierszy, aby uzyskać określony format wyjściowy.
Oto kompletny przykład:
SELECT * FROM my_table INTO OUTFILE '/tmp/my_table.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;
Plik jest zapisywany na serwerze, a wybrana ścieżka musi być zapisywalna. Chociaż to zapytanie może być wykonane przez PHP i żądanie sieciowe, najlepiej wykonać je za pomocą konsoli mysql.
Dane eksportowane w ten sposób można zaimportować do innej bazy danych przy użyciu ZAŁADUJ ZBIORNIK DANYCH
Chociaż ta metoda jest lepsza od iteracji przez zestaw wyników i zapisywania w pliku wiersz po wierszu, nie jest tak dobra, jak używanie....
mysqldump
mysqldump jest lepsze od SELECT INTO OUTFILE pod wieloma względami, tworzenie CSV to tylko jedna z wielu rzeczy, które to polecenie może zrobić.
Narzędzie klienta mysqldump wykonuje logiczne kopie zapasowe, tworząc zestaw instrukcji SQL, które można wykonać w celu odtworzenia oryginalnych definicji obiektów bazy danych i danych tabeli. Zrzuca jedną lub więcej baz danych MySQL w celu wykonania kopii zapasowej lub przeniesienia na inny serwer SQL. Polecenie mysqldump może również generować dane wyjściowe w formacie CSV, innym rozdzielanym tekście lub formacie XML.
Idealnie mysqldump powinien być wywoływany z twojej powłoki. Możliwe jest użycie exec w php, aby go uruchomić, ale ponieważ tworzenie zrzutu może zająć dużo czasu w zależności od ilości danych, a skrypty php zwykle działają tylko przez 30 sekund, musisz uruchomić go jako proces w tle.
mysqldump nie jest pozbawiony wielu problemów.
Nie jest to szybkie ani skalowalne rozwiązanie do tworzenia kopii zapasowych znacznych ilości danych. Przy dużych rozmiarach danych, nawet jeśli etap tworzenia kopii zapasowej zajmuje rozsądny czas, przywracanie danych może być bardzo powolne, ponieważ ponowne odtwarzanie instrukcji SQL wymaga wejścia/wyjścia dysku w celu wstawienia, utworzenia indeksu i tak dalej.
Klasyczny przykład, zobacz to pytanie: Awaria serwera podczas tworzenia kopii zapasowej MySQL przy użyciu Pythona gdzie jeden mysqldump wydaje się uruchamiać przed zakończeniem wcześniejszego i całkowicie przestaje odpowiadać.
Replikacja MySQL
Replikacja umożliwia kopiowanie danych z jednego serwera bazy danych MySQL (głównego) na jeden lub więcej serwerów bazy danych MySQL (podrzędnych). Replikacja jest domyślnie asynchroniczna; urządzenia podrzędne nie muszą być połączone na stałe, aby otrzymywać aktualizacje od urządzenia nadrzędnego. W zależności od konfiguracji możesz replikować wszystkie bazy danych, wybrane bazy danych, a nawet wybrane tabele w bazie danych.
Zatem replikacja
działa inaczej niż SELECT INTO OUTFILE
lub msyqldump
Jest to idealne rozwiązanie, aby dane w kopii lokalnej były prawie aktualne (powiedziałbym, że idealnie zsynchronizowane, ale jest coś, co nazywa się opóźnieniem niewolnika) Z drugiej strony, jeśli używasz zaplanowanego zadania do uruchomienia mysqldump
raz na 24 godziny. Wyobraź sobie, co może się stać, jeśli serwer ulegnie awarii po 23 godzinach?
Za każdym razem, gdy uruchamiasz mysqldump, produkujesz dużą ilość danych, rób to regularnie, a zobaczysz, że twój dysk twardy jest zapełniony lub rachunki za przechowywanie plików spadają. Podczas replikacji tylko zmiany są przekazywane na serwer (za pomocą tzw. binloga)
XtraBackup
Alternatywą dla replikacji jest użycie Percona XtraBackup .
Percona XtraBackup to narzędzie do tworzenia kopii zapasowych na gorąco dla serwerów opartych na MySQL, które nie blokuje bazy danych podczas tworzenia kopii zapasowej.
Choć przez Perconę, jest kompatybilny z Mysql i Mariadb. Ma możliwość wykonywania przyrostowych kopii zapasowych, których brak jest największym ograniczeniem mysqldump.