Блог Amazon Web Services
Лучшие практики по изменению базы данных Amazon RDS из одной зоны доступности в несколько
Оригинал статьи: ссылка (Hanish Garg, Senior Solutions Architect)
Многие заказчики, использующие базы данных, тратят большое количество времени на создание высокодоступной архитектуры. Высокая доступность критически важна для непрерывности бизнеса. Вы можете создавать высокодоступные базы данных в облаке AWS с помощью Amazon Relational Database Service (Amazon RDS).
Amazon RDS – сервис полностью управляемых баз данных, который позволяет без значительных усилий создавать, управлять и масштабировать реляционные базы данных в облаке. Вы можете запускать инстансы баз данных Amazon RDS в одной зоне доступности (Single-AZ) или в нескольких зонах доступности (Multi-AZ), для обеспечения заданных требований к высокой доступности.
В этой статье мы рассмотрим лучшие практики по изменению инстансов из конфигурации Single-AZ на Multi-AZ для MySQL, MariaDB, PostgreSQL и Oracle, а также покажем, как увеличить производительность и уменьшить задержки, возникающие при такой конвертации. Amazon RDS for SQL Server и Amazon Aurora используют другой технологический стек для работы в нескольких зонах доступности.
Архитектура Amazon RDS
Каждая база данных Amazon RDS запускается на отдельном инстансе, использующем том Amazon Elastic Block Store (Amazon EBS) для хранения данных. Кроме того, Amazon RDS создаёт ежедневные снимки состояния базы данных, которые надёжно хранятся в Amazon Simple Storage Service (Amazon S3). При использовании конфигурации Single-AZ один инстанс базы данных RDS и один или больше томов EBS создаются в одной зоне доступности, которая может состоять из нескольких дата-центров. В случае Multi-AZ, инстансы RDS и тома EBS создаются в нескольких зонах доступности.
При включении настройки Multi-AZ сервис Amazon RDS создаёт дополнительную консистентную резервную копию ваших данных с использованием синхронной репликации на уровне хранения данных. В этом случае Amazon RDS обнаруживает и автоматически восстанавливается после наиболее распространённых сценариев сбоев, чтобы вы могли продолжать работать с базой данных без необходимости ручного вмешательства. Amazon RDS автоматически выполняет аварийное переключение в случае проблем с основной зоной доступности, отсутствия подключения по сети, сбоя вычислительных ресурсов или ресурсов, используемых для хранения данных, как описано на странице Развёртывание Amazon RDS в нескольких зонах доступности. Использование нескольких зон доступности значительно уменьшает риск того, что обе копии будут испытывать проблемы одновременно, тем самым обеспечивая высокодоступную архитектуру для вашей базы данных.
Изменение конфигурации Single-AZ на Multi-AZ
Для того чтобы развернуть базу данных в нескольких зонах доступности, или поменять конфигурацию существующей базы с Single-AZ на Multi-AZ, вы можете воспользоваться Консолью управления AWS, Интерфейсом командной строки AWS (AWS CLI) или Amazon RDS API. Для поддержки нескольких зон доступности при создании базы данных из консоли выберите опцию Create a standby instance. Для конвертации существующей базы данных измените соответствующий инстанс через консоль, AWS CLI или Amazon RDS API. По умолчанию эти изменения будут применены во время следующего окна обслуживания, если вы не выберите опцию, которая позволяет применить их немедленно.
Почему во время конвертации увеличиваются задержки
При изменении инстанса из конфигурации Single-AZ на конфигурацию Multi-AZ сервис Amazon RDS создаёт снимок состояния базы данных, а затем разворачивает его в новых томах в другой зоне доступности. Хоть новые тома и доступны практически сразу, их производительность не достигает целевых значений до момента, пока все блоки хранилища не будут скопированы из исходного снимка состояния базы данных.
Таким образом, при конвертации вы можете заметить более высокие задержки и влияние на производительность. Степень такого влияния зависит от типа диска, ваших рабочих нагрузок, инстанса самой базы данных, а также размера тома. Оно может быть достаточно высоким и может негативно повлиять на инстансы с большим количеством операций записи во время пиковых нагрузок. Более подробную информацию вы можете найти в документации по ссылке Modifying a DB instance to be a Multi-AZ deployment.
Как уменьшить задержки
Для уменьшения таких задержек и улучшения производительности в случае использования Amazon RDS для MySQL, MariaDB, PostgreSQL и Oracle Enterprise Edition вы можете заранее создать реплики для чтения, чтобы подготовить вашу базу данных к конвертации. В этом случае блоки хранилища будут скопированы до того, как к ним понадобится доступ.
В целом, реплики для чтения в Amazon RDS упрощают горизонтальное масштабирование базы данных для рабочих нагрузок с большим количеством операций чтения. Вы можете создать одну или больше реплик для каждого инстанса базы данных. В следующих шагах мы посмотрим, как создать реплику для чтения в другой зоне доступности, синхронизовать её с вашим инстансом, а затем сделать её основным инстансом для уменьшения задержек при конвертации.
- В консоли Amazon RDS выберите вашу базу данных.
- В меню Actions нажмите Create read replica.
- В качестве источника (поле Replica source) укажите вашу базу данных, используемую в производственной среде.
- Выберите опцию Create a standby instance.
Для более детальных инструкций обратитесь к документации по ссылке Creating a read replica. - После окончания синхронизации новой реплики, вы можете сделать из неё отдельный инстанс базы данных, поддерживающий режим записи, и переключить запросы из вашего приложения на неё. После того, как реплика будет работать с производительностью, соответствующей вашим ожиданиям, запланируйте окно обслуживания. Чтобы определить это, вы можете следить за соответствующей метрикой, показывающей задержку для записей, в Amazon CloudWatch.
- При конвертации реплики в самостоятельный инстанс вы можете переименовать её, а также изначальный инстанс, чтобы название точки доступа базы данных осталось тем же самым.
- Включите автоматические бэкапы, если потребуется.
Заключение
В этой статье мы показали лучшие практики по конвертации инстансов RDS из конфигурации Single-AZ в Multi-AZ для MySQL, MariaDB, PostgreSQL и Oracle без влияния на производительность. Используя подход с репликами для чтения, ваши приложения, работающие с базой данных, не будут испытывать повышенных задержек или ухудшения производительности при переключении.
Конфигурация Amazon RDS с несколькими зонами доступности повышает доступность и надёжность данных заказчиков. Более подробную информацию вы можете узнать на страницах Amazon RDS High Availability и High availability (Multi-AZ) for Amazon RDS.