Перейти к содержимому

Надежность Снимка ВМ?

0

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

1) Помимо установки какого-либо агента для управления базой данных для резервного копирования, является ли это разумным способом надежного резервного копирования системы?

2) Есть ли какие-либо проблемы, о которых я должен знать, когда использую такой метод?

Изменить: у меня есть программное обеспечение, которое затем берет снимок и сохраняет его с устройств, сохраняет последние несколько, и я убедился, что снимок возвращается в другой среде vCenter.

764 просмотра
Abraxas спросил 10 лет назад
A 3 191

1 ответ

2
Принятый ответ

Как указывал ChrisInEdmonton, вы делаете снимки, а не резервные копии.

Резервное копирование подразумевает какое-то вторичное хранилище. Это может быть что угодно: от дискет или USB-накопителей, до второго жесткого диска (часто внешнего), магнитной ленты и всего остального. Резервная копия часто хранится в месте, физически отличном от данных, для которых выполняется резервное копирование, для защиты от сбоев «общего режима» (сбоев, когда одна основная причина влияет на несколько устройств, таких как скачок напряжения, вынимающий как оригинал, так и оригинал). в качестве резервной копии).

Кроме того, ваша схема имеет потенциально серьезную проблему.

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

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

Остановка программного обеспечения сервера базы данных является хорошим первым шагом, но это вовсе не гарантирует, что все кэши уровня ОС были сброшены в постоянное хранилище (с точки зрения ОС, работающей внутри ВМ).

PostgreSQL поставляется с утилитой pg_dump, которая будет выгружать базу данных в сценарий SQL, который может быть возвращен в PostgreSQL для восстановления базы данных. (Обязательно проверьте справочную страницу, чтобы все нужные параметры были правильными, и, как и для всех резервных копий, протестируйте ее!) Это удобно, но не обязательно на 100% . В зависимости от ваших потребностей, это может быть достаточно хорошо.

Кроме того, вы можете остановить сервер PostgreSQL (это гарантирует отсутствие транзакций в полете) и скопировать его файлы данных в отдельное местоположение, которое обслуживается другим экземпляром PostgreSQL. Запустите оба и запустите pg_dump для второго экземпляра. После завершения дампа остановите второй экземпляр. Это более сложно, но фактически гарантирует, что вы получите внутренне согласованный дамп, не полагаясь на то, что формат файла данных PostgreSQL останется неизменным. Если база данных большая, возможно, следует скопировать большинство файлов во время работы PostgreSQL, а затем запустить что-то вроде rsync после остановки PostgreSQL для передачи дельты, чтобы сократить время простоя.

Резервное копирование остальной части виртуальной машины можно выполнить обычными способами, не учитывая тот факт, что это виртуальная машина. Если вы храните все изменчивые данные на отдельном виртуальном диске, то может даже оказаться возможным сконфигурировать большую часть системы для монтирования файловой системы только для чтения, что означает простую копию файла образа виртуального диска извне виртуальной машины. выполняется с разумными результатами даже во время работы виртуальной машины.

Спасибо за подробный ответ. Я отредактировал свой вопрос, включив в него шаг «резервное копирование» после создания снимка. Я использую программное обеспечение, которое делает снимок и сохраняет его, чтобы его можно было импортировать в различные среды ESXi / vCenter. Я достаточно уверен, что приложение / система устойчивы к этому типу резервного копирования, но не уверен насчет базы данных. В частности, я не знаю, является ли остановка службы Windows Postgresql обязательно безопасным способом остановки активности в базе данных? Я предполагаю, что он договаривается о времени, чтобы остановиться, а не просто заставляет его закрыться?

Abraxas · 10 лет назад · 0

«это вовсе не гарантирует, что все кэши на уровне ОС были сброшены в постоянное хранилище (с точки зрения ОС, работающей внутри ВМ)». Я не понимаю, как это важно. Снимок работающей виртуальной машины сохраняет состояние ее оперативной памяти, регистров ЦП и т. Д. Если виртуальная машина не выполняет активный ввод-вывод с внешними по отношению к виртуальной машине вещами (например, сетевыми подключениями, подключенными дисками), то моментальный снимок должен быть внутренне согласованным.

jamesdlin · 10 лет назад · 0
a CVn ответил 10 лет назад
A 24 192