Назад | Перейти на главную страницу

Восстановление нескольких снимков EBS на большие тома в одном логическом томе

Ситуация: у нас есть сервер MySQL в AWS, использующий три тома EBS в чередующемся логическом томе для хранения данных базы данных. Логический том почти заполнен, поэтому нам нужно как-то его расширить. Один из вариантов - перезапустить сервер и присоединить новые, более крупные тома EBS, а затем восстановить их из существующего моментального снимка со старого сервера. (В конечном итоге нам нужно будет сделать это в следующий раз, когда нам придется заменить сервер по другим причинам, поэтому я пропускаю параметры, которые изменяют существующий сервер на месте.)

У меня такой вопрос: если у нас есть три снимка EBS (скажем) по 50 ГБ каждый, составляющие логический том, могу ли я восстановить эти снимки на новый сервер с тремя томами EBS большего размера (скажем, 75 ГБ или 100 ГБ или что-то еще)? Или это рецепт катастрофы? Есть ли какие-то особые шаги, которые мне нужно предпринять, чтобы взять на себя текущий процесс? Если бы я хотел вместо этого добавить четвертый том EBS объемом 50 ГБ, могу ли я восстановить три моментальных снимка в новую группу из четырех томов?

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

NB: Я явно не собираюсь копировать сюда большую веб-страницу. Документация AWS довольно стабильна и регулярно обновляется, я не хочу, чтобы устаревшие ответы вызывали проблемы.

Альтернативное решение

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

Потому что LVM Логический объем можно расширить, просто добавив больше дисков (Физические объемы = Тома EBS) в Группа томов.

  1. Создать AMI с вашего текущего сервера, чтобы вы могли вернуться, если что-то пойдет не так.
  2. Создайте 3 новых тома EBS (например, 3x 50 ГБ)
  3. Создайте раздел LVM на каждом из них и pvcreate раздел
  4. Добавьте тома в Группа томов с помощью vgextend
  5. Расширить MySQL Логический объем с участием lvresize а затем расширить файловую систему (зависит от типа вашей файловой системы, например resize2fs).
  6. Готово.

Вы можете попробовать расширить текущие тома EBS вместо добавления трех новых, но тогда вы по-прежнему необходимо расширить все разделы, обновить VG, развернуть LV и изменить размер файловой системы. Это немного более подвержено ошибкам, но должно работать так же.

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

Или используйте вместо этого Amazon Aurora

На вашем месте я бы перенес вашу базу данных на Амазонка Аврора управляемая база данных, совместимая с MySQL. Практически нет необходимости запускать самоуправляемый MySQL на EC2, если вы не делаете что-то очень особенное. С Авророй вы получите:

  • Автоматическое управление дисковым пространством (больше не будет нехватки места, больше не будет управления томами EBS)
  • Автоматическая установка исправлений для ОС и MySQL
  • Автоматическое переключение при отказе в случае отказа базового физического хоста (как вы справляетесь с этим на своем текущем экземпляре?)
  • Автоматическое резервное копирование с восстановлением на определенный момент времени (отлично, если вы случайно TRUNCATE wrong_table_oops; ;)
  • Все это при обеспечении почти 100% совместимости со стандартным MySQL.

Я перенес много баз данных MySQL в Aurora, и почти во всех случаях это было так просто, как mysqldump из старой базы данных и загрузите ее в Aurora (в качестве альтернативы используйте AWS DMS) и измените имя хоста базы данных в приложении. Это просто и сэкономит вам много накладных расходов на управление MySQL в будущем.

Надеюсь, это поможет :)