Я настроил новый сервер MySQL на Amazon EC2 и решил сохранить свои данные в массиве EBS RAID0. Пока все хорошо, и я тестировал снимки этих устройств с ec2-compatibility-snapshot, отлично.
Теперь, как быстро перестроить массив на новом экземпляре из этих снимков?
Когда вы используете ec2-compatibility-snapshot для создания моментального снимка нескольких томов, вы не можете сказать, какой том использовался для каждого устройства в RAID. Возможно, я совершенно не прав, но поскольку вы распределяете данные по томам, вполне логично, что вы должны поместить каждый НОВЫЙ том в то же место на RAID-массиве, что и том, из которого был создан моментальный снимок.
Пример:
- Тома 3x200 ГБ в конфигурации RAID0.
- vol-1 - это / dev / sdh устройство 0 в RAID
- vol-2 является / dev / sdh1 устройством 1 в RAID
- vol-3 является / dev / sdh2 устройством 2 в RAID
Вы создаете EC2 снимок с: ec2-consistent-snapshot <options> vol-1 vol-2 vol-3
.
Теперь у вас есть 3 снимка, и единственный способ отследить, какое это устройство, - это посмотреть на идентификатор исходного тома, затем посмотреть, на какое устройство подключен исходный идентификатор тома, как в экземпляре, и затем проверить детали RAID. Конфигурация на экземпляре исходного тома.
Это, очевидно, невероятно ручная ... и не быстрая (что, очевидно, затрудняет быстрый запуск нового экземпляра mysql, если другой не дает результатов. Не говоря уже о том, что вам придется записывать положения устройств на RAID в то время моментального снимка, потому что в случае сбоя исходного тома у вас нет возможности добраться до конфигурации RAID).
Итак, в заключение:
- Я что-то упускаю из-за того, как работает ec2 -istent-snapshot и программный массив RAID0?
- Если нет, есть ли какие-либо известные решения / лучшие практики по проблеме не зная, какому устройству / положению в RAID-массиве принадлежит снимок?
Я надеюсь, что это было ясно, и спасибо за вашу помощь!
источник
Я запустил аналогичную конфигурацию ( RAID0 на 4 томах EBS ) и, следовательно, имел те же проблемы при восстановлении массива RAID из снимков, созданных с помощью ec2-compatibility-snapshot .
К счастью, каждое устройство в массиве raid содержит метаданные (в суперблоке), которые записывают его положение в массиве, UUID массива и уровень массива (например, RAID0). Чтобы запросить этот суперблок на любом устройстве, выполните следующую команду (строка, совпадающая с '^ this', описывает запрашиваемое устройство):
Если вы выполните тот же запрос на устройстве, которое не является частью массива, вы получите:
Что доказывает, что эта команда действительно опирается на информацию, хранящуюся на самом устройстве, а не на какой-то файл конфигурации.
Можно также проверить устройства RAID-массива, начиная с устройства RAID, и получить похожую информацию:
Я использую его позже вместе с ec2-description-volume для построения списка томов для ec2 -istent-snaptshot ( -n и --debug позволяют протестировать эту команду без создания снимков). Следующая команда предполагает, что каталог / mysql является точкой монтирования тома, а регион AWS - us-west-1 :
источник
Я знаю, что это не отвечает на ваш вопрос, но я делаю что-то подобное, но с базовым инструментом Amazon ec2-create-snapshot и скриптом cron. Это не так быстро, как в ec2-compatibility-snapshot, но я получаю дополнительный элемент управления, который мне нужен: fsync, блокировка записи и, самое главное, присваивать имена снимкам соответствующим образом, чтобы они могли быть восстановлены в правильном порядке.
источник