kykyryky
@kykyryky

Зачем ставят сервер баз данных на виртуалку?

Начался курс баз данных в университете, на первой паре поставили перед фактом, что MS SQL Server будет на виртуалке, толком не объяснив причин - просто так нужно. Так же читал статьи на хабре, там тоже люди имеют дело с виртуалками, особенно в web. Но ведь в реальных проектах вряд ли сервера бд стоят на виртуалках, а хочется начать разбираться во всем этом сразу так, как это должно быть в реальности.
Объясните пожалуйста, зачем это нужно, чем хорош или плох такой способ, почему бы не поставить сервер просто на комп? спасибо.
  • Вопрос задан
  • 8983 просмотра
Решения вопроса 2
kumaxim
@kumaxim
Web-программист
Если речь идет о том, что СУБД будет крутиться на университетских ПК, тогда цель может быть только одна - не засорять основную ОС. Представь, ты сел, поставил себе СУБД на хостовую ОС, создал какую-то базу, забил пару таблиц информацией и т.д.

Первая причина - время инсталляции СУБД. Не знаю как для MS SQL, но, например, Oracle 10g ставится около 50 минут, что есть полпары. А процесс инсталяции особо ничем не примечателен, просто сидишь втыкаешь в процесс бар на экране...

Вторая причина.
ОК, поставил ты СУБД, начинаешь ты ее конфигурировать. Все упирается в рут-пароль, без которого, например, Oracle снести вообще нельзя(хотя могу ошибаться). Можно конечно условится, чтобы пасс был один, но кто-нибудь из больно "умных" студентов задаст свой пароль и потом надо будет над этим ПК оператору аудитории с бубном плясать пару часов либо искать кто ставил тот злосчастных пасс... А это все время, на которое учебная машина выпадает из учебного процесса.

Третья причина
Убил кто-то СУБД корявыми настройками. Сколько надо будет танцевать с бубном чтобы выпилить убитую СУБД с хостовой ОС? Зависит от того как убили, но ясно что на это время опять университетская машина из учебного процесса выпадает.

А теперь прикинь, что СУБД стоит под виртуалкой и есть где-то образ с конфигурацией по умолчанию. Развернуть виртуалку на основе готового образа - дело 5-10 минут. Снести виртуалку или заменить ее - опять же больших проблем не вызовет.
При этом, как было подмечено в выше, в настройках твоего приложения разница будет только в 1 строке - адрес сервера. Для локального localhost, для любого другого - ip-адрес
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Реальные проекты, особенно мелкие - часто на виртуалках.

Выделять каждому ученику реальный компьютер под базу данных - дорого, а учитывая, что для обучения нужна СЛОЖНАЯ база из 2.5 таблиц и 10 строк в каждой, то на одном компе можно целый класс виртуалок поднять для каждого, дешево и сердито.

P.S. Практически весь хостинг, на котором сейчас крутятся сайты - это ВСЕ виртуалки.
P.P.S. Весь бизнес по возможности также виртуализируют, если есть возможность. Исключения - высоконагруженные машины, и то...
Виртуализация позволяет упростить процесс миграции, резервного копирования и т.д.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 6
@386DX
Возможно, для миграции виртуалки между нодами отказоустойчивого кластера, для полного бэкапа со всеми настройками и разворачивания на другом железе в случае отказа.
Ответ написан
Комментировать
zo0m
@zo0m
full stack developer
Не нужно нервничать:) , люди целиком переносят свою рабочую среду внутрь виртуальной машины, вот например:
habrahabr.ru/post/178797

И все отличие от того что База будет на виртуалке или нет, это в 1 месте во время настройки подключения. А так - хоть на луне, все равно задачи на перформанс в ВУЗе вряд ли будут преподаваться.
Ответ написан
opium
@opium
Просто люблю качественно работать
Сейчас все ставится на виртуалки так как они решают проблему миграции на другое железо и могут обеспечивать высокую доступность
Ответ написан
Комментировать
swanrnd
@swanrnd
Издатель HTML5 игр
Виртуалку проще восстанавливать, клонировать.

А так разницы почти никакой нету.
Ответ написан
Комментировать
@alexq2
1. БД уже давно виртуализируют. Виртуализируют даже билинг телекома. Почитайте гайды и бест практики вендоров (vmware, Microsoft, oracle).
2. В учебном классе можно делать снапшоты, можно взять и скопировать вм и дома доделать, то что не успел в институте. Для образовательных целей виртуализация, самое то.
Ответ написан
Комментировать
Учебное применение виртуализации - это одно. Да, очень удобно - сунул файлик ВМ, запустил - готово! Каждый студент работает со своей виртуалкой, никто ни к кому не вмешается, на работу другого не повлияет. Кончилась лаба, грохнул файлик и всё. Совсем другое - продакшн. Не всё удобно виртуализировать. Отчасти из-за потерь на "накладные расходы" виртуализации, отчасти из-за дополнительных лицензий на виртуальные серверы.
У себя поставил виртуальные серверы под Debian на libvirt. Проводил тесты, потери на io виртуализируемого в файле винчестера примерно 5-10% от аналогичного реального. Потери производительности виртуализованного процессора аналогично. Вот к каким выводам пришёл:

Минусы виртуализации на libvirt:
- снижение производительности io
- снижение производительности процессора
- виртуальный сервер "поедает" до 100Мб оперативной памяти
- необходимость lvm для снапшотов (никогда не настраивал, ненавижу lvm)
- ядра процессора с поддержкой HyperTrading видны как "настоящие" процессоры
- некоторые "тяжёлые" операции внутри ВМ вызывают сильное торможение всего виртуального сервера
- не стоит использовать для хранения ВМ дисковые массивы, отличные от raid1
- требуются дополнительные "колдунства", чтобы виртуальный сервер корректно выключал ВМ с серверными платформами Windows, аналогичные выключению питания Windows Server по кнопке питания

Плюсы виртуализации на libvirt:
- лёгкая смена "железа" при выходе из строя сервера
- лёгкое администрирование с любой платформы по rdp, если поставить xrdp и virt-manager
- лёгкое использование аппаратных или программных raid для хранения ВМ
- возможность использовать в качестве дисков ВМ локальных файлов|дисков, удалённых ресурсов nfs и др.

Тонкости виртуализации на libvirt:
Поставил виртуальный сервер. Размер самого сервера - менее 10Гб. Винтов два, на обоих своп по паре Гб. Raid софтовый, на нём система, остаток места на винтах - софтовый raid1. Как его использовать - два варианта. Можно создать ФС и примонтировать в стандартный пул libvirt: /var/lib/libvirt (или в другое место) и разместить там требуемые образы дисков и ВМ. Можно образы дисков разместить в /var/lib/libvirt в корневом разделе системы, а софтовый raid оставить без ФС и подключить полностью как "диск" ВМ, указав его имя, например, /dev/md1.
Преимущество софтового raid1 под Linux в том, что можно соединить хоть 10 дисков, в отличие от аппаратных raid контроллеров или софтового под Windows.
Вообще же, использование софтового raid даёт существенный прирост в чтении данных, например, софтовый raid1 из 6 дисков имеет скорость чтения, сопостовимую с 6-дисковым raid0.
Если сервер БД виртуальный, и работает больше на выборку, чем на обновление|добавление, это преимущество вам может быть просто неимоверно на руку :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы