2014-02-10 2 views
5

Я новичок в Vagrant и задаю пару вопросов.Потеря данных в Vagrant после перезагрузки или уничтожения

Иногда, когда я перезагружаю компьютер или уничтожаю бродягу, вся база данных Mysql уничтожается. Я попытался найти ответы на это в stackoverflow, но до сих пор не повезло.

Так что мой вопрос, являются:

1) Где данные откладываются?

2) Почему я иногда теряю данные?

3) Если да, то как сохранить данные после перезапуска уничтожения?

+0

'destroy' [* удаляет все следы виртуальной машины от соответствующего провайдера *] (https://docs.vagrantup.com/v2/cli/destroy.html). Не удивительно, что это включает ваши данные. Если вы хотите отключить виртуальную машину без потери данных, используйте 'halt' или' suspend'. – Jon

+1

Мне не понятно, почему он также удаляет базу данных. Я знаю, что он удалит все бродячие следы, но почему база данных? Где это хранится? Почему он удаляет базу данных иногда, когда я перезапускаю и не всегда? –

+0

хозяин БД вне бродяг – zonabi

ответ

6

На мой взгляд, ответы на ваши вопросы зависят от того, как вы создали проект. На проекте, который я работаю на нашем Настроенном следующее (упрощенно):

  • Сервер база данных (облако организовано)
  • происхождения сервера (облако принимало)
  • бродяги коробки для местного развития
  • мерзавца хранилище
  • ...

на vagrant init каждый разработчик получает копию среды, которая является сервер убунту. Весь код приложения (веб-сайт) монтируется в виртуальную машину из локальной файловой системы. Мы сохраняем это приложение в репозитории git. Затем мы храним несколько скриптов внутри брандмауэра, которые синхронизируют базу данных с производством (или демонстрационным сервером) - в основном он загружает файл дампа базы данных и помещает его в вашу виртуальную машину.

В этом случае, если вы делаете vagrant destroy, а затем vagrant init, вам нужно запустить скрипт синхронизации базы данных, чтобы вернуть базу данных. Наши разработчики (в основном) не меняют содержимое базы данных, поэтому нам не нужно сохранять локальные изменения.

Надеюсь, что это поможет.

+0

Спасибо за ваш ответ. Лучше ли использовать онлайн-базу данных по сравнению с локальным db у бродяг? Также где хранятся файлы db? –

+0

Я думаю, что вы, вероятно, хотите иметь локальную базу данных на своей виртуальной машине. Приведенное выше описание относится к проекту веб-приложения, в котором используется централизованная база данных. Vagrant предоставляет локальную копию этой базы данных, чтобы разработчик мог работать в изолированной среде. Если вы разрабатываете программное обеспечение для настольных компьютеров с использованием базы данных, вам может не понадобиться онлайн-база данных. Но это зависит от требований. Кажется, что вы запустили сервер базы данных внутри виртуальной машины, поэтому в зависимости от того, какая система будет, путь будет отличаться. Например. MySQL db на Ubuntu может быть в/var/lib/mysql/ –

+0

https://dev.mysql.com/doc/refman/4.1/en/installation-layouts.html, это может объяснить местоположение установленных файлов MySQL, если это то, что вы спрашивали. –

1

Главный ответ довольно хороший, я просто хотел добавить к вашему третьему вопросу.

Чтобы сохранить ваши изменения, вы должны хранить базу данных на хост-машине и иметь брандмауэр для ее подключения. Таким образом, вы не потеряете базу данных на бродячих уничтожить.

Возможно, вы уже используете NFS для синхронизации папок с кодом, так что это всего лишь шаг в аналогичном направлении.

+0

Можете ли вы связать что-нибудь об этом? – alayli

+0

@alayli У меня нет ссылки, так как я закончил свое собственное решение. Но то, что вы в основном делаете, заключается в том, что код внутри Vagrant подключается к базе данных на вашей главной машине. Для этого вам нужно будет узнать IP-адрес хост-машины из Vagrant, и вам может потребоваться настроить базу данных на хосте, чтобы разрешить удаленные соединения с Vagrant IP. –

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