Я хочу через регулярные промежутки времени выгружать базу данных на мой удаленный сайт, используя сценарий оболочки. К сожалению, сервер довольно сильно заблокирован, не имеет mysqldump
Установлено, двоичные файлы не могут быть выполнены обычными пользователями / в домашних каталогах (поэтому я не могу "установить" его сам), а база данных находится на отдельном сервере, поэтому я не могу получить файлы напрямую.
Единственное, что я могу сделать, это войти на веб-сервер через SSH и установить соединение с сервером базы данных с помощью mysql
клиент командной строки. Как мне выгрузить содержимое в файл а-ля mysqldump
в формате SQL?
Бонус: если возможно, как я могу выгрузить содержимое прямо на свой конец SSH-соединения?
Мне нравится идея SSH-туннеля, предложенная ниже, однако мне нужно сделать двойной туннель.
localhost -> remote web server -> remote database server
Это нормально работает:
$ ssh -f -L 3306:mysql.example.com:3306 user@ssh.example.com -N
Однако попытка войти в mysql не удалась:
$ mysqldump -P 3306 -h localhost -u user -p db
Enter password:
mysqldump: Got error: 1045: Access denied for user 'user'@'localhost'
(using password: YES) when trying to connect
Я предполагаю, что он ожидает, что учетные данные пользователя будут 'user'@'mysql.example.com'
. Как я могу уговорить его использовать это вместо «настоящего» хоста?
Хорошо, я заставил его работать, добавив 127.0.0.1 mysql.example.com
в мой файл hosts и подключение через mysqldump -P 3306 -h mysql.example.com -u user -p db
. Проблема решена! Однако меня все равно будет интересовать решение, которое не требует от меня редактирования файла hosts.
Вы можете установить туннель ssh и использовать mysqldump
на вашем локальном компьютере.
ssh -f -L 3306:localhost:3306 user@remoteserver -N
mysqldump -P 3306 -h localhost -u dbuser dbname
http://sypex.net/en/ - вы можете использовать этот скрипт для резервного копирования базы данных после ее загрузки на сервер. Очень удобно и быстро
Загрузить этот скрипт на ваш веб-сервер (надеюсь, у вас есть хотя бы FTP-доступ), запустите его, укажите имя / хост базы данных (адрес вашего «отдельного сервера») / имя пользователя / пароль и выгрузите базу данных в любое место, где вы хотите ...
Если ваш сервер является веб-сервером, вы можете использовать сценарий PHP, который выводит базу данных на экран. На вашем сервере резервного копирования поместите cron, который получит страницу дампа. Затем ваша база данных выгружается на ваш сервер резервного копирования только по HTTP.
Не забывайте о безопасности: любой желающий может сбросить вашу базу. Ставьте пароль, или ограничение IP ...