Как загрузить живую базу данных MySQL в локальную тестовую базу данных по требованию без SSH? - PullRequest
6 голосов
/ 02 сентября 2008

У меня довольно небольшая база данных MySQL (установка Textpattern) на сервере, к которому у меня нет доступа по SSH (у меня есть только доступ по FTP). Мне нужно регулярно загружать живую базу данных на мой локальный сервер разработки по требованию; то есть я бы хотел запустить скрипт и / или запустить задание cron. Какие есть хорошие способы сделать это?

Некоторые замечания:

  • Live сервер работает под управлением Linux, Apache 2.2, PHP 5.2 и MySQL 4.1
  • Локальный сервер работает так же (поэтому использование PHP является опцией), но ОС Windows
  • На локальном сервере есть Ruby (поэтому допустимо использование Ruby)
  • Live MySQL DB может принимать удаленные подключения с разных IP-адресов
  • Я не могу включить репликацию на удаленном сервере

Обновление: Я принял ответ BlaM; это красиво просто. Не могу поверить, что я не думал об этом. Однако была одна проблема: я хотел автоматизировать процесс, но предлагаемое решение запрашивает пароль у пользователя. Вот немного измененная версия команды mysqldump, которая передает пароль:

mysqldump -u USER --password=MYPASSWORD DATABASE_TO_DUMP -h HOST > backup.sql

Ответы [ 6 ]

5 голосов
/ 02 сентября 2008

Поскольку вы можете получить удаленный доступ к своей базе данных, вы можете использовать mysqldump с вашего компьютера с Windows для извлечения удаленной базы данных. Из командной строки:

cd "into mysql directory"
mysqldump -u USERNAME -p -h YOUR_HOST_IP DATABASE_TO_MIRROR >c:\backup\database.sql

Программа запросит у вас пароль базы данных, а затем сгенерирует файл c: \ backup \ database.sql, который вы сможете запустить на компьютере с Windows для вставки данных.

С небольшой базой данных, которая должна быть довольно быстрой.

2 голосов
/ 20 мая 2009

Вот что я использую. Это создает дамп базы данных с живого сервера, одновременно загружая ее на локальный сервер. mysqldump -hlive_server_addresss -ulive_server_user -plive_server_password --opt --compress live_server_db | mysql -ulocal_server_user -plocal_server_password local_server_db

Вы можете запустить это из bat файла. Вы можете использовать запланированное задание.

1 голос
/ 02 сентября 2008

Возможна ли репликация MySQL? Вы можете даже включать и выключать его, если не хотите, чтобы он постоянно копировался.

Это была хорошая статья о репликации.

0 голосов
/ 02 сентября 2008

В зависимости от того, как часто вам нужно копировать текущие данные и как быстро вам нужно это делать, установка phpMyAdmin на обеих машинах может быть опцией. Вы можете экспортировать и импортировать БД, но вам придется делать это вручную. Если это небольшая БД (и звучит так, как она есть), и вам не нужно копировать оперативные данные слишком часто, это может хорошо работать для того, что вам нужно.

0 голосов
/ 02 сентября 2008

@ Марк Бик

Возможна ли репликация MySQL? Вы можете даже включать и выключать его, если не хотите, чтобы он постоянно копировался.

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

0 голосов
/ 02 сентября 2008

Я бы создал (Ruby) скрипт, чтобы сделать SELECT * FROM ... для всех баз данных на сервере, а затем выполнить DROP DATABASE ... с последующей серией новых INSERT с локальной копией. Вы можете выполнить запрос SHOW DATABASES для динамического отображения баз данных. Теперь предполагается, что структура таблицы не изменяется, но если вы хотите поддерживать изменения таблицы, вы можете добавить запрос SHOW CREATE TABLE ... и соответствующий оператор CREATE TABLE для каждой таблицы в каждой базе данных. Чтобы получить список всех таблиц в базе данных, вы делаете запрос SHOW TABLES.

Когда у вас есть сценарий, вы можете настроить его как запланированное задание для запуска так часто, как вам нужно.

...