Bezpośrednie kopiowanie bazy Mysql na inny serwer
Nie jest konieczne ręczne kopiowanie dumpa bazy danych na inny serwer i lokalne wykonanie importu danych.
Do tego procesu możemy użyć poniższego skryptu BASH. Dzięki niemu skopiujemy wszystkie tabele na inny serwer. Jak widać w skrypcie została użytą instrukcja IF, dzięki której możemy przefiltrować odpowiednie bazy danych których nie chcemy kopiować.
Na serwerze docelowym musi istnieć user "USER_SERWERA_DOCELOWEGO" i powinien on mieć możliwość logowania się z maszyny źródłowej. Uwaga w skrypcie została użyta opcja "--databases --add-drop-database" która do każdej bazy danych dodaje "DROP TABLE IF EXISTS", więc jeśli taka baza danych istnieje, to przed importem danych zostanie usunięta i stworzona nowa.
Do tego procesu możemy użyć poniższego skryptu BASH. Dzięki niemu skopiujemy wszystkie tabele na inny serwer. Jak widać w skrypcie została użytą instrukcja IF, dzięki której możemy przefiltrować odpowiednie bazy danych których nie chcemy kopiować.
Na serwerze docelowym musi istnieć user "USER_SERWERA_DOCELOWEGO" i powinien on mieć możliwość logowania się z maszyny źródłowej. Uwaga w skrypcie została użyta opcja "--databases --add-drop-database" która do każdej bazy danych dodaje "DROP TABLE IF EXISTS", więc jeśli taka baza danych istnieje, to przed importem danych zostanie usunięta i stworzona nowa.
#!/bin/bash DBS="$(mysql -u USER_LOKALNY -h localhost -pHASLO_LOKALNE -Bse 'show databases')" for db in $DBS do if [ "$db" != "phpmyadmin" ] && [ "$db" != "performance_schema" ] && [ "$db" != "information_schema" ] && [ "$db" != "mysql" ]; then file=$db echo $db mysqldump -u USER_LOKALNY -h localhost -pHASLO_LOKALNE --databases --add-drop-database --max-allowed-packet=1073741824 $db | mysql -uUSER_SERWERA_DOCELOWEGO -pHASLO_SERWERA_DOCELOWEGO -h192.168.1.123 fi done
Dział: