Zwykle po zrzuceniu bazy danych MySQL mysqldump
polecenia natychmiast tar / gzip wynikowy plik. Szukam sposobu, aby to zrobić za pomocą jednego polecenia:
Więc z tego:
mysqldump dbname -u root -p > dbname.sql
tar czvf dbname.sql.tgz dbname.sql
rm dbname.sql
Do czegoś takiego:
mysqldump dbname -u root -p > some wizardry > dbname.sql.tgz
Lub nawet lepiej (ponieważ zwykle scp'uję plik zrzutu na inny serwer):
mysqldump dbname -u root -p > send dbname.sql.tgz to user@host
Używam bash na Debianie.
mysqldump | tar cf - | gzip -c | ssh ... 'cat > file.tgz'
mysqldump --opt <database> | gzip -c | cat > $(date +%Y-%m-%d-%H.%M.%S).sql.gz
gzip -c > $(date +%Y-%m-%d-%H.%M.%S).sql.gz
netcat
zamiast sipowania. Możesz trochę zaoszczędzić na kosztach szyfrowania ssh, jeśli są one przesyłane przez bezpieczną sieć (lub nie martwisz się o bezpieczeństwo). W dzisiejszych czasach możesz również rozważyć użyciexz
zamiastgzip
.Jeśli uruchamiasz to lokalnie, po prostu użyj następującego polecenia, aby wykonać kopię zapasową bazy danych i skompresować ją za pomocą gzip:
(Edycja: klawisz fixed-c)
źródło
gzip -c
, prawda?Użyj nazwanego potoku.
Używam go cały czas, jest niesamowity.
http://en.wikipedia.org/wiki/Named_pipe
źródło
mkfifo mysql_pipe; gzip -9 -c < mysql_pipe > name_of_dump.gz &; mysqldump database > mysql_pipe; rm mysql_pipe
tam, jedna linia. Oczywiście zatrzymałbym fajkę i używałbym jej za każdym razem.Napisałem szybki skrypt do wyssania zdalnej bazy danych mysql. Wykorzystuje kompresję mysql, gzip i kompresję ssh. W niesamowitym tempie wyssałem bazę danych o pojemności wielu GB.
Dodatkową korzyścią jest to, że nie wymaga wolnego miejsca na źródłowym serwerze bazy danych, więc można go użyć do wykonania kopii zapasowej bazy danych na serwerze z zerowym wolnym miejscem na dysku przed przystąpieniem do czyszczenia danych.
Mam nadzieję, że to komuś pomoże.
źródło
Używaj
pv
i monitoruj tempo!Lub, jeśli znasz rozmiar (3 GB), uzyskaj dokładne oszacowanie:
źródło
Spróbuj tego:
Proszę, nie jestem w żaden sposób dobry w tych sprawach, po prostu połączyłem 2 opcje w sieci w jedną.
Może być lepiej w inny sposób, ale jest to jedna linijka, która działa dla mnie.
Jednak wymaga
ssh.keys
instalacji i akceptacji, jeśli chcesz używać go w skryptachcrontab
lub w podobny sposób.źródło
Możesz zrobić jak:
mysqldump --add-drop-table -h dbhost -u dbuser -p dbname (tablename tablename ... ) | gzip -c > wp.sql.gz
na przykład
mysqldump --add-drop-table -h localhost -u root -p wordpress | gzip -c > wp.sql.gz
źródło
Pracowałem nad tym skryptem bash poniżej, który próbuje zebrać wszystkie dobre porady, które widziałem, jeśli chodzi o zrzut / przywracanie z mysql. Jest ukierunkowany na operacje zdalne.
Po prostu ponownie skonfiguruj vars i spróbuj. :)
Funkcje to:
Co wymaga poprawy:
Udostępniam ten skrypt tutaj, mając nadzieję, że może on zostać ulepszony przez społeczność. (najlepiej oglądać w nano lub innym edytorze, który koloruje kod)
--------------------------------- przetnij tutaj --------------- -------------------
źródło
Możesz również zapisać swoje hasło w pliku konfiguracyjnym i użyć tej opcji - domyślny plik-dodatkowy:
Plik konfiguracyjny może wyglądać następująco:
źródło