Просмотров: 19038
Дата последнего изменения: 17.01.2024
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
3
4
5
MySQL и облако
Облачные базы данных — это базы данных, которые запускаются на платформах облачных вычислений, таких как
Amazon EC2,
GoGrid и
Rackspace. Существуют две распространенные модели развертывания: пользователи могут приобрести непосредственно услугу доступа к базам данным, обслуживаемым поставщиком облачного сервиса, или же запустить базы данных в облаке независимо, используя образ виртуальной машины. Среди облачных баз данных присутствуют как SQL-ориентированные, так использующие модель данных NoSQL.
В общем, MySQL в "облаке", по своей сути мало отличается от "не облачной" версии.
Поэтому при настройке базы, отладке производительности и ее мониторинге нужно руководствоваться общими принципами, за исключением некоторых нюансов облака, про которые будет описано
ниже.
Например, при использовании образов виртуальных машин в "облаках", в качестве основного сервера баз данных вместо обычного MySQL можно использовать его форк Percona Server:
- Percona Server оптимизирован для работы с медленными дисками. И это очень актуально для "облака" - диски там почти всегда традиционно медленнее (к сожалению), чем обычные диски в "железном" сервере. Проблему неплохо решает организация софтверного рейда, но и оптимизация со стороны серверного ПО - только в плюс.
- Рестарт базы (при большом объеме данных) - дорогая долгая операция. В Percona Server есть ряд особенностей, которые позволяют делать рестарт гораздо быстрее - Fast Shut-Down, Buffer Pool Pre-Load. Последняя позволяет сохранять состояние буфер-пула при рестарте и за счет этого получать "прогретую" базу сразу после старта (а не тратить на это долгие часы).
- Множество счетчиков и расширенных отчетов (по пользователям, по таблицам, расширенный вывод SHOW ENGINE INNODB STATUS и т.п.), что очень помогает находить, например, самых "грузящих" систему клиентов.
- XtraDB Storage Engine - обратно совместим со стандартным InnoDB, при этом гораздо лучше оптимизирован для высоконагруженных проектов.
В качестве же системы хранения данных в MySQL также можно использовать "улучшенную версию" InnoDB - XtraDB:
- На долгих запросах в MyISAM блокируется вся таблица. В InnoDB - только те строки, с которыми работаем. Соответственно, в InnoDB долгие запросы в меньшей степени влияют на другие запросы и не отражаются на работе пользователей.
- На больших объемах данных и при высокой нагрузке таблицы MyISAM "ломаются". Это - известный факт.
В облаке, так же, как и для обычного MySQL, для серьезных проектов, можно и нужно использовать репликацию.
В качестве мониторинга и аналитики, в дополнение к тому, что предлагает сам облачный провайдер, можно использовать все те же привычные сервисы, которые используются в случае "не облака": nagios, munin и прочие.
При использовании "облаков" все-таки существуют некоторые нюансы. Например, стоит упомянуть проблему скорости.
Самое простое в этом случае - организовать RAID. Например, Amazon позволяет организовать "софтварный" рейд довольно просто, который работает долго и практически не ломается.
Также стоит отметить, что если "облако" позволяет, то можно использовать специальные быстрые диски. У Amazon, например, есть диски с Provisioned IOPS.
Примечание: Подробнее про использование облачных "дисков" и бэкап на них, включая Инкрементальный бэкап MySQL, можно посмотреть в
следующей статье.
Немного теории про облачные базы данных
Модель развертывания
Существует два основных метода запуска базы данных в "облаке":
- Непосредственно через образ виртуальной машины. Облачные платформы позволяют приобретать виртуальные машины, где возможно запускать базы данных. Пользователи могут загружать свои образы с уже установленной базой или же воспользоваться готовыми, где установлен уже оптимизированный экземпляр.
- База данных, как сервис - некоторые облачные платформы предлагают уже готовый сервис баз данных, при помощи которого можно обойтись без виртуальной машины. Пользователю не нужно устанавливать и поддерживать базу данных самостоятельно. Заместо этого, поставщик сервиса берет на себя ответственность в установке и обслуживании базы данных.
Например, Amazon Web Services предоставляет три базы данных, входящие в их облачный сервис: Amazon Relational Database Service (SQL-ориентированная база данных с MySQL интерфейсом), DynamoDB.
Так же можно приобрести хостинг базы данных, в случае если база данных не предоставляется как сервис. Например, облачный провайдер Rackspace предлагает такую услугу для баз данных MySQL.
Архитектура и общие характеристики
-
Многие провайдеры к базам данных предоставляют веб-интерфейс, при помощи которого пользователи могут устанавливать и настраивать экземпляры баз данных.
Например, веб-консоль Amazon Web Services позволяет запускать экземпляры баз данных, создавать снепшот и следить за статистикой.
-
Так же предлагается компонент управления базами данных, который контролирует основную базу данных, используя специальное API сервиса. API открыто для пользователя и позволяет ему выполнять обслуживание и масштабирование своих экземпляров баз данных.
-
Сервис делает прозрачным для пользователя весь стек программного обеспечения, который используется для поддержания работоспособности базы. Обычно он включает в себя операционную систему, саму систему управления базами данных и стороннее программное обеспечение, используемое в работы. Поставщик услуг берет на себя ответственность за установку, исправление и управление данным программным обеспечением.
-
Сервис берет на себя масштабируемость и доступность базы данных. Причем особенности масштабируемости различаются у разных поставщиков — кто-то это делает автоматически, а другие позволяют пользователю производить расширение при помощи API. Также провайдеры обычно гарантируют высокую доступность сервиса (около 99,9 % или 99,99 %).
Источник: Wikipedia