Должен ли я и как мне сделать резервную копию моей базы данных для веб-приложения, размещенного на сервере Amazon EC2?

705
Kim Stacks

Я настроил экземпляр Amazon EC2, используя серверную версию Ubuntu, и установил на нее стек LAMP . Я сделал PHP веб-приложение, работающее на MySQL. Я протестировал веб-приложение на Amazon EC2, и оно работает.

Я официально не запускал, но мне нужно знать это перед запуском. Должен ли я сделать резервную копию моей базы данных? Если так, как я должен сделать это настолько рентабельным насколько возможно?

Ранее для другого веб-приложения я написал сценарий Perl или Bash (не помню), который будет выполняться cron ежедневно.

Затем сценарий создаст резервную копию базы данных в один .sqlфайл и отправит в виде вложения электронной почты в мою учетную запись Gmail.

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

Для этого нового веб-приложения на Amazon Web Services (AWS) я не определился, потому что:

  1. Я не думаю, что это хорошее решение, так как данные, отправленные по электронной почте, небезопасны. Насколько я помню, SSL не существует, хотя это было дешевое решение. Свободно. Легко получить по дате.

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

    • (Я подозреваю), есть превосходный и экономически эффективный способ сделать резервную копию с помощью Amazon S3 .
  3. Я разрешаю пользователям загружать файлы, поэтому мне нужно как-то сделать резервную копию этих файлов. Что я не знаю, как и никогда не делал это раньше в любой форме.

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

Фон:

  • Я совершенно незнаком с AWS. Знайте только, как создать учетную запись. Это все.

  • << Один год опыта как кто-то новичок в Ubuntu. Большая часть моей жизни в Windows.

  • В основном интим с программированием на PHP. Владение другими языками программирования не так хорошо из-за отсутствия использования.

2

2 ответа на вопрос

2
Mike Scott

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

Кроме того, имейте в виду, что если ваш сервер EC2 находится в хранилище экземпляров, данные будут стерты, если сервер когда-либо будет остановлен. Для постоянного хранения ваши данные должны находиться на томе Elastic Block Storage (EBS). Как только он окажется на томе EBS, вы сможете делать периодические снимки (вручную или автоматически с помощью API Amazon), которые затем позволят вам вернуться к более старым версиям. AWS SDK для PHP довольно хорош, и вы можете найти его здесь: http://aws.amazon.com/sdkforphp/ .

Спасибо за информацию о периодических снимках. Я даже не знаю, есть такая вещь. И да, я уже на EBS. Сначала я пройду через AWS SDK. Как только я получу его на работу, я отмечу ваш ответ как правильный ответ. А пока я просто уточню ваш ответ. Kim Stacks 13 лет назад 0
1
bwight

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

Резервное копирование MySQL в S3 очень распространено и хорошо документировано во многих блогах. Я рекомендую следовать руководству здесь http://agiliq.com/blog/2009/02/automatics-backup-mysql-database-to-amazon-s3-u/

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

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

  1. Создать резервную копию ежедневно
  2. Отправьте резервную копию на S3 (убедитесь, что вы используете контрольную сумму MD5, чтобы убедиться, что резервная копия в порядке)
  3. Скачайте резервную копию с S3 локально или у другого провайдера, не S3
  4. Очистка старых резервных копий с использованием скользящей истории типов резервных копий
    • Хранить резервную копию последних 7 дней
    • Храните резервную копию пятницы каждую неделю в течение 1 месяца
    • Хранить резервную копию прошлого месяца в течение 1 года

Похожие вопросы