2010-12-10 3 views
1

У меня есть 2 сервера. В # 1 удаленный доступ к БД отключен. База данных огромна (~ 1 ГБ), поэтому невозможно сбрасывать ее с помощью phpMyAdmin, поскольку она сбой и зависает соединение. У меня нет доступа к SSH. Мне нужно скопировать всю БД на # 2 (где я могу настроить практически все).Копирование базы данных MySQL по HTTP

Моя идея - использовать какой-то уровень доступа HTTP через # 1.

Например, простой скрипт PHP, который принимает запрос как аргумент _GET/_POST и возвращает результат как тело HTTP.

На # 2 (или на моем рабочем столе) я мог бы настроить какое-то серверное приложение, которое будет запрашивать последовательно каждую строку в каждой таблице, даже по одному в то время.

И мой вопрос: знаете ли вы какое-нибудь готовое к использованию приложение с таким потоком?

КСТАТИ: # 1 является PHP только, # 2 может быть PHP, Python и т.д.

Я ничего не могу на # 1 бежать, все Еореп, локон, розетки, система и т.д. отключены. Я могу получить доступ только к БД из PHP, не разрешено удаленное подключение

+0

Является ли ваш MySQL общедоступным или доступным любым возможным способом удаленно? – TheLQ

+1

get ssh, http не предназначен для этого, и вам придется закодировать большой контроль над ним, где существуют существующие протоколы (с rsync или openvpn может помочь без полного доступа ssh). Также вы можете попробовать serverfault. – Unreason

+1

, в то время как это вызывает интересный вопрос, я должен спросить, почему вы просто не просите свой системный администратор перенести данные для вас? вы пытаетесь собрать данные из источника, к которому вы, как предполагается, не должны получать доступ в первую очередь? – Will

ответ

0

давно я использовал Sypex Dumper для этого, только что покинул открытый браузер на ночь, а на следующее утро whle дб свалка была доступна на фтп

0

Непонятно, что доступно на сервере №1.

Предполагая, что вы можете работать только PHP вы все еще может быть в состоянии

  • перспективе scp from php и подключение к серверу # 2, отправлять файлы, как этот

  • может быть, вы можете использовать PHP для запуска локальных команд на сервере # 1? в этом случае что-то вроде работает rsync through php с сервера # 1 может работать

+0

Я ничего не могу запустить на # 1, все fopen, curl, sockets, system и т. Д. Отключены. Я могу получить доступ только к БД из PHP, и удаленные подключения не разрешены. – Coder

0

Это звучит для меня, что вы должны связаться с владельцем хозяина и спросить, если вы можете получить ваши данные как-то. Это слишком глупо, что вы должны передавать всю вашу базу данных и вставлять ее на новую машину. Он будет потреблять много ресурсов на сервере php, откуда вы получаете данные. (И если хостинг-провайдер уже является ограничивающим, у вас может быть ограничение на количество операций sql, которые вы разрешаете в промежуток времени)

Хотя, если вы вынуждены это сделать, вы можете сделать выбор * из таблицы и для каждой строки преобразуйте ее в объект json, который вы эхо на линии. Это можно сохранить на диске на вашем конце и использовать для его вставки позже.

+0

будет работать, но ужасно медленный/болезненный. согласитесь, что контакт с администратором будет лучшим путем для получения данных. – Will

+0

Хостинг-провайдер полностью недоступен - он не отвечает на сообщения, письма, телефонные звонки более трех лет. Однако сервер и домен продолжают работать, довольно удивительно. И я думаю, что это единственный вариант - я только спрашиваю, есть ли программное обеспечение, которое я могу использовать, прежде чем я начну писать свои собственные. – Coder

0

Я подозреваю, что вы можете получить доступ к обоим серверам с помощью FTP.

Как вы можете получить ваши php-файлы в противном случае.

Возможно, вы можете просто скопировать базу данных mysql, если вы можете получить к ней доступ с помощью FTP.

Работает не во всех случаях: http://dev.mysql.com/doc/refman/5.0/en/copying-databases.html для получения дополнительной информации.

Или вы можете попробовать варианты найти по этой ссылке:

http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/using-php-to-backup-mysql-databases.aspx

Не теперь, как ваш PHP настроен, хотя, как я могу себе представить, что может занять некоторое время, чтобы обработать всю базу данных.

максимальное время выполнения установки и т.д.

0

Существует возможность репликации, если хотя бы один из хостов доступен удаленно через TCP. Было бы медленным синхронизировать девственную БД таким образом, но было бы полезно сохранить все метаданные таблицы, которые вы в противном случае потеряли бы, выполнив последовательности выбора/вставки. Подробнее здесь: http://dev.mysql.com/doc/refman/5.0/en/replication.html

1

Можете ли вы подключиться к удаленному серверу MySQL с PHP на сервере # 1?

Я знаю, что вы сказали «никаких удаленных подключений не разрешено», но вы не указали конкретно этот сценарий.

Если это возможно, вы можете выбрать SELECT из своей старой базы данных и непосредственно INSERT для MySQL, работающего на сервере # 2.

0

Я не уверен, как вам удалось попасть в эту ситуацию. Хостинг-провайдер явно необоснован, и вам следует обратиться к ним. Вы также должны прекратить использовать свои услуги как можно скорее (хотя это похоже на то, что вы пытаетесь сделать в любом случае).

К сожалению, PHPMyAdmin не подходит для операций с базой данных, которые имеют решающее значение для данных, поскольку у него слишком много ошибок и ограничений - вы, конечно же, не должны полагаться на это, чтобы сбрасывать или восстанавливать.

mysqldump - единственный способ RELIABLY сбросить базу данных и вернуть ее и иметь хорошие шансы на то, что данные будут полными и правильными. Если вы не можете запустить его (локально или удаленно), я боюсь, что все ставки отключены.

Смежные вопросы