www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Автоматизация  

Автоматизируем рутину: что реально работает?

Многие сисадмины автоматизировали что-то за последний год. Но далеко не все остались

 Читать далее...

Защита ИТ-системы  

Практическая защита: что вы внедрили и что мешает?

Какие меры безопасности реально внедрить в реальных условиях – и что не

 Читать далее...

Вопрос-ответ  

Обеспечиваем безопасную эксплуатацию базы данных

Что для вас чаще всего является причиной инцидентов с БД? Как вы

 Читать далее...

Книжная полка  

От «безопасного» Linux до Контролируемого взлома

Издательство «БХВ» продолжает радовать читателей интересными новинками и в наступившем году. Вы можете

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 11227
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 11346
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 8831
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 5337
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 6183
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 6076
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 8928
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 5521
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 5736
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 9906
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 13302
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 14797
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 16530
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 11390
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 9382
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 7631
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 6761
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 5630
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 5258
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 5587
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

Друзья сайта  

 Обеспечиваем безопасную эксплуатацию базы данных

Архив номеров / 2026 / Выпуск №1-2 (278-279) / Обеспечиваем безопасную эксплуатацию базы данных

Рубрика: Безопасность /  Вопрос-ответ

 

Обеспечиваем
безопасную эксплуатацию базы данных

Что для вас чаще всего является причиной инцидентов с БД? Как вы мониторите БД? Как у вас организованы бэкапы? Как вы проводите изменения схемы и миграции? Приходилось ли вам настраивать шардирование/партицирование, и что было самым сложным?

 


На вопросы отвечает Георгий Кашинцев,
руководитель отдела SRE, Rambler&Co

«В реальных системах производительность БД определяется не только аппаратными ресурсами, но и качеством схемы, запросов и ключей распределения данных»

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

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

Чтобы не реагировать на такие ситуации постфактум, мы уделяем большое внимание мониторингу. Метрики БД собираются через postgres_exporter и alligator (alligatormon) в Prometheus.

Для нас критичны утилизация соединений, лаг репликации, среднее время выполнения запросов, количество операций в секунду (insert, update, select, delete), а также объём прочитанных и записанных кортежей и число последовательных сканирований (sequential scan).

Такой набор позволяет заранее предсказать рост I/O-нагрузки в ближайшей и среднесрочной перспективе, а не дожидаться инцидента, связанного с деградацией производительности базы данных.

Резервное копирование построено по классической промышленной схеме: ежедневные полные бэкапы в сочетании с непрерывной архивацией WAL, что позволяет делать point-in-time recovery. Реплика используется в первую очередь для обеспечения отказоустойчивости, каждая реплика в момент падения primary-узла готова его заменить. Также реплика используется для масштабирования операций чтения. При этом реплика не должна рассматриваться как замена резервному копированию, хотя и повышает уровень доступности данных в любой момент времени.

Изменения схемы и миграции выполняются через CI-пайплайны с обязательной обратной совместимостью. Между релизами приложений эта совместимость сохраняется: новые поля добавляются заранее, а удаление устаревших колонок происходит спустя несколько релизов.

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

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

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

 

Ключевые слова: базы данных, бэкап, изменения схемы и миграции, производительность БД, шардирование


Подпишитесь на журнал

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru