Всё гениальное, как говорится, просто. Болтался я вчера в IRC и додумался я до одной интересной вещи.
Имеем сервер с mysql, который слушает только localhost. Туда есть доступ по ssh. Нам лениво изменять настройки mysql. А нужно сделать дамп базы на нашу машинку или скопировать удаленную базу в локальную.
remotehost — удаленный сервер
remotedb — база на удаленном сервере
localdb — база на локальном компе
remotemuser — юзер mysql на удаленном сервере
localmuser — юзер mysql на локальном сервере
Создание дампа в таких условиях:
localserver:~$ ssh user@remotehost mysqldump -u remotemuser -p remotedb > file.sql
Создаст дамп file.sql в текущем каталоге с содержимым базы remotedb.
Восстановим базу на удаленный сервер:
localserver:~$ ssh user@remotehost mysql -u remotemuser -p remotedb < file.sql
Сей финт ушами мы используем для централизованного создания бэкапов с кучи серверов на один. Скрипты хранить на каждом сервере ненадо ) Да и cron один.
Как то не очень получается. Возникает куча вопросов
Например: Что произойдет если я не знаю количество баз данных на сервере и названия их?
Хотя финт интересный
Может я что-то не понимаю но ведь если написать «… < ssh …", то bash будет искать файл "ssh" чтобы из него прочитать.
Да, что то я стормозил.
Перепишу вечером.
Писать адский скрипт, фигле =)
Если удаленный сервер лег (или сервер БД остановлен), то file.sql получится пустым на бекап сервере.
mysqldump -u $user -p$password $dbname —lock-all-tables –-quick > $dirbackup/db.sql
делаю так и пустой файла дампа на локалке создаётся, как поправить ???
Откуда дамп-то делаете? По ssh вы никуда не пошли