Chcę zachować kopię zapasową wszystkich moich baz danych MySQL. Mam ponad 100 baz danych MySQL. Chcę wyeksportować je wszystkie jednocześnie i ponownie zaimportować je wszystkie na mój serwer MySQL jednocześnie. Jak mogę to zrobić?
mysql
database-backups
mysql-backup
Nowy użytkownik
źródło
źródło
Inne rozwiązanie:
Tworzy kopie zapasowe każdej bazy danych w innym pliku
źródło
ExcludeDatabases="Database|information_schema|performance_schema|mysql"
[następna linia]databases=`-u $USER -p$PASWORD -e "SHOW DATABASES;" | tr -d "| " | egrep -v $ExcludeDatabases`
i usuń całkowicie linieif
ifi
. W zmiennejExcludeDatabases
przechowujesz nazwy baz danych, których nie należy zrzucać [zwykle systemowe bazy danych].-Bse "show databases"
aby uniknąć dodatkowych wyników formatowania, a tym samym możesz usunąć| tr -d "| " | grep -v Database
. W moim skrypcie eksportu wiersz ten brzmidatabases=`mysql -u $USER -p$PASSWORD -Bse "SHOW DATABASES;"
U+200C U+200B
między „c” i „h” słowa „schemat” . To łamie kopiowanie i wklejanie tego bitu. Więcej dyskusji na ten temat tutaj: meta.stackexchange.com/questions/170970/…Wszystkie odpowiedzi, które widzę na to pytanie, mogą mieć problemy z zestawami znaków w niektórych bazach danych z powodu problemu przekierowania wyjścia
mysqldump
do pliku w operatorze powłoki>
.Aby rozwiązać ten problem, wykonaj kopię zapasową za pomocą takiego polecenia
Aby wykonać dobre przywracanie BD bez problemów z zestawami znaków. Oczywiście możesz zmienić domyślny zestaw znaków, jak potrzebujesz.
źródło
Na podstawie tych odpowiedzi stworzyłem skrypt, który tworzy kopie zapasowe wszystkich baz danych w osobne pliki, ale następnie kompresuję je w jednym archiwum z datą jako nazwą.
To nie poprosi o hasło, może być używane w cron. Aby zapisać hasło,
.my.cnf
sprawdź tę odpowiedź https://serverfault.com/a/143587/62749Wykonane również z komentarzami dla tych, którzy nie są zbyt dobrze zaznajomieni ze skryptami bash.
źródło
Po co parsować sformatowane dane wyjściowe, podczas gdy komenda mysql może robić bezpośrednio to, co chcesz?
Wyświetla nazwy baz danych i tylko to.
źródło
Zachowaj ostrożność podczas eksportowania zi importowania do różnych wersji MySQL, ponieważ tabele mysql mogą mieć różne kolumny. Jeśli nie masz szczęścia, uprawnienia do grantu mogą nie działać. Stworzyłem ten skrypt (mysql_export_grants.sql), aby zrzucić granty na import do nowej bazy danych, na wszelki wypadek:
źródło
Podczas zrzutu całej bazy danych. Oczywiście ma duże dane. Możesz więc wybrać poniżej dla lepszego:
Tworzenie kopii zapasowej:
Jeśli błąd
- Ostrzeżenie: Pomijanie danych tabeli mysql.event. Podaj jawnie opcję --events.
Posługiwać się:
Przywracanie kopii zapasowej:
Mam nadzieję, że to pomoże :)
źródło
Napisałem ten komentarz już ponad 4 lata temu i postanowiłem teraz udzielić odpowiedzi.
Skrypt z jruzafa może być nieco uproszczona:
Uwaga:
ExcludeDatabases
źródło
mysqldump -uroot -proot - wszystkie bazy danych> allDB.sql
Uwaga: -u „twoja nazwa użytkownika” -p „twoje hasło”
źródło
Wyeksportuj wszystkie bazy danych w Ubuntu
1 -
mysqldump -u root -p --databases database1 database2 > ~/Desktop/databases_1_2.sql
LUB
2 -
mysqldump -u root -p --all_databases > ~/Desktop/all_databases.sql
źródło