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

Снимок RDS: как долго происходит приостановка ввода-вывода?

Поскольку в нашей стратегии резервного копирования мы полагаемся на ручное резервное копирование RDS Postgresql, мы столкнулись с проблемой, связанной с возможным простоем экземпляра RDS (одна зона доступности) во время создания моментального снимка. Согласно AWS:

Создание этого моментального снимка БД в инстансе БД в одной зоне доступности приводит к кратковременной приостановке ввода-вывода, которая может длиться от нескольких секунд до нескольких минут, в зависимости от размера и класса вашего инстанса БД.

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

Что заставило нас задуматься:

Ответ приходит от понимания того, как работает моментальный снимок.

В начале моментального снимка всем приложениям отправляется сообщение (команда), чтобы они пришли в согласованное состояние и сбросили необходимые данные на диск.

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

После того, как каждое приложение, поддерживающее моментальный снимок, завершает свою подготовку к замораживанию, процесс моментального снимка затем привязывает файловые системы, что означает, что если в какие-либо дополнительные блоки данных записываются, сначала делается копия для процесса резервного копирования (COW - Копирование при записи). Затем каждому приложению отправляется сообщение / команда размораживания (возобновления).

Для малоиспользуемой базы данных процесс замораживания / размораживания может занять всего несколько сотен миллисекунд. Для большой базы данных с ГБ памяти, которую необходимо сбросить на диск, потребуется несколько секунд.

Во время цикла замораживания / оттаивания дисковый ввод-вывод для запросов новых пользователей приостанавливается. База данных все еще работает, но все запросы будут приостановлены, пока диски / файловые системы синхронизируются. Все возобновится с получением сообщения о таянии.

Для баз данных Master-Slave это не влияет на master. Снимок будет сделан на ведомом устройстве. Это одна из замечательных функций AWS RDS.