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.


#!/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