Каков рекомендуемый способ резервного копирования базы данных MySQL / Amazon RDS на S3?

31

У меня есть две цели для этого:

  1. Иметь резервную копию вне сайта на случай региональной проблемы с Amazon Web Services.
  2. Чтобы скопировать производственные данные из производственного биллингового счета в бета-биллинг.

В настоящее время кажется, что Amazon не поддерживает ни один из этих двух вариантов использования из коробки.

Я видел упомянутые mysqldump и xtrabackup (см. Форму сообщения).

Я также видел более сложный процесс (задокументировано здесь )

  1. Новый сервер RDS в исходной учетной записи (prod) запускается из последней резервной копии.
  2. Будет запущен новый экземпляр EC2, который имеет доступ к серверу RDS на шаге 1.
  3. mysqldump используется для создания резервной копии этой базы данных.
  4. Резервная копия копируется во внешнее хранилище (S3?).
  5. В отдельной учетной записи и / или регионе запускается новый сервер RDS.
  6. Дамп базы данных импортирован.

Советы и предложения приветствуются.

Питер Стивенс
источник

Ответы:

22

Рекомендуемый способ резервного копирования RDS - автоматическое резервное копирование и моментальные снимки БД . Снимки БД в основном такие же, как и снимки EBS, которые хранятся в S3 за кулисами, но доступны только в пределах одного региона.

Если вам нужна межрегиональная отказоустойчивость (хороший план!), Нет способа восстановить ваши данные в другом регионе, не сделав это «трудным путем» из mysqldump. В качестве альтернативы вы можете выполнить резервное копирование с помощью mysqldump (медленно и ужасно для любого набора данных разумного размера) или настроить свое ведомое ведомое устройство на базе EC2 в другом регионе и создать резервную копию с помощью любого доступного метода (xtrabackup, снимки EBS и т. Д.). Однако затем вы вернулись к управлению своими собственными экземплярами MySQL, так что вы могли бы также полностью отказаться от RDS.

За мои деньги RDS не дает абсолютно никаких преимуществ и имеет множество недостатков в производительности, гибкости и надежности. Я хотел бы спросить себя, какую ценность предоставляет вам RDS.

Аарон Браун
источник
Для моих текущих потребностей mysqldump может работать нормально. Я не ожидаю массивных наборов данных, и обычно мне не нужно, чтобы данные перемещались слишком быстро. Я надеюсь, что RDS будет поддерживать функцию раскрутки нового сервера из снимка в другой учетной записи. Еще одна полезная функция - импорт / экспорт снимков из Amazon с помощью S3 или их сервера импорта / экспорта. В любом случае, спасибо за ответ.
Питер Стивенс
4
Снимки RDS теперь можно копировать в другие регионы. Смотрите это объявление и эту документацию для деталей.
Шелли
9

Я была такая же проблема. Моим решением было написать простой скрипт bash . Однако, он ограничен одним регионом.

Вот сценарий в вопросе:

#!/bin/bash
NOWDATE=`date +%Y-%m-%d`
BACKUPNAME="$NOWDATE.sql.gz"

echo "Creating backup of database finances to $BACKUPNAME"
mysqldump user=user password=password database_name | gzip -9 > $BACKUPNAME

echo "Succesfully created database backup"

echo "Uploading backup to Amazon S3 bucket…"
s3cmd put $BACKUPNAME s3://path/to/file/$BACKUPNAME

echo "Successfully uploaded backup to S3"

echo "Deleting backup file…"
rm $BACKUPNAME

echo "Done"
Дживан Донгре
источник
Я настоятельно рекомендую --single-транзакции при запуске mysqldump
user1250
7

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

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

Майк Лапинскас
источник
1
Существует мягкое ограничение в 100 ручных снимков на регион для каждой учетной записи.
Джуд