Пример образа машины MySQL в облачных сервисах

Основная сложность в создании образа машины, который поддерживает серверы базы данных, заключается в том, что для этого необходимо знать, как выбранный вами движок базы данных (database engine) хранит данные. В случае с MySQL движок базы данных имеет каталог данных для хранения информации о статусе. Этот каталог данных в действительности может называться по-разному (например, /usr/local/mysql/data, /var/lib/mysql и т. д.), но это единственное, что, кроме конфигурационного файла, должно быть отделено от образа машины. В типичной индивидуализированной сборке каталог данных располагается в каталоге

/usr/local/mysql/data.

ПРИМЕЧАНИЕ

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

Как только вы запустите экземпляр со стандартного образа и укрепите его безопасность, вам потребуется создать том для эластичного блочного хранения и примонтировать его1. Стандартный подход Amazon заключается в монтировании тома от /mnt (например, /mnt/database). В принципе, с технической точки зрения точка монтирования значения не имеет, но если для каждого образа монтирование производится к тому же самому каталогу, то это может помочь уменьшить путаницу.

После этого вы можете установить MySQL, причем необходимо делать это в пределах корневой файловой системы экземпляра (т. е. /usr/local/mysql). На данном этапе переместите данные через блочное устройство, выполнив следующие шаги:

1.      Остановите MySQL, если процесс инсталляции автоматически запустил сервер базы данных.

2.      Переместите ваш каталог данных в точку монтирования и дайте ему имя, более подходящее      для      монтирования      отдельного      устройств      (например,

/mnt/database/mysql).

3.      Отредактируйте ваш файл my.cnf таким образом, чтобы он указывал на новый каталог данных.

1 Этот процесс я описал на примере Amazon EC2 в главе 2.

Теперь вам требуется решить любопытную задачку: MySQL не сможет запуститься до тех пор, пока не будет примонтировано блочное устройство, но блочное устройство в Amazon EC2 не может быть подключено к экземпляру виртуальной машины до тех пор, пока этот экземпляр работает. В результате вы не сможете запустить MySQL, следуя нормальным процедурам загрузки. Однако вы можете оказаться в такой ситуации, когда вы хотите принудительным образом установить необходимый порядок событий: загрузить виртуальную машину, примонтировать устройство, и, наконец, запустить MySQL. Поэтому вам необходимо осторожно изменить ваши пусковые скрипты MySQL, таким образом, чтобы система больше не запускала MySQL в процессе загрузки системы, но, тем не менее, останавливала движок MySQL при останове системы.

ВНИМАНИЕ!

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

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

Источник: Риз Дж., Облачные вычисления: Пер. с англ. — СПб.: БХВ-Петербург, 2011. — 288 с.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете промотать до конца и оставить ответ. Pinging в настоящее время не допускается.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100