SlideShare a Scribd company logo
PostgreSQL: 
Ups, 
Devops. 
Алексей Лесовский
О себе 
• Алексей Лесовский 
• PostgreSQL-Consulting.com 
• Консалтинг, техническая поддержка, тренинги 
• Вопросы архитектуры, производительности и масштабирования
Мы поговорим: 
• об актуальности проблемы в сфере управления конфигурациями 
и автоматизацией задач в рамках эксплуатации СУБД 
• про задачи обслуживания баз данных 
• про автоматизацию задач в области обслуживания баз данных 
• о проблемах связанных с автоматизацией и управлением 
конфигурациями 
• о том где нужно и где нельзя использовать автоматизацию 
• об особенностях инструментов в аспекте применения к СУБД 
• о том как все это применить на практике 
• horror stories
Актуальность проблемы. 
• качественный и количественный рост оборудования 
• необходимость сокращения времени на “деплой” и 
сопровождение 
• появление devops практик и инструментов 
• mission-critical задачи
Задачи обслуживания БД. 
• поддержка конфигурации серверов БД 
• управление 3rd-party ПО 
– skytools, pgbouncer, pgpool-II, postgis, tzdata, etc 
• развертывание репликации 
– SR/BDR, slony, londiste, bucardo, etc 
• обновление и upgrade 
– minor/major update (pg_upgrade)
Задачи обслуживания БД. 
• балансировка запросов от приложения 
– haproxy, pgpool-II 
• switchover/failover 
• анализ отчетов и мониторинг 
– pgbadger/pgfouine, zabbix/nagios, pgCluu/PoWA 
• routine maintenance 
• резервное копирование и валидация резервных копий
Задачи обслуживания БД. 
• Итого: 
– задачи типовые 
– задачи ручные
Автоматизация задач. 
• Итого: 
– "X" < 4: мало серверов - все можно сделать руками 
– "Х" > 4: много серверов - тут начинается рутина 
• Автоматизация: 
– экономит время при выполнении рутинных задач 
– устраняет вероятность ошибки в процессе настройки 
– унификация и однобразие внутри инфраструктуры
Вероятные проблемы. 
• Первичные: 
– База данных это один из важнейших элементов 
инфраструктуры 
– Операции DBA зачастую носят единоразовый характер 
• Вторичные: 
– Недоверие со стороны штатных администраторов 
– Гетерогенная инфраструктура 
– Ограниченные возможности внутри среды
Варианты решения. 
• предварительное тестирование 
• ad-hoc операции 
• дипломатия и переговоры 
• тщательный выбор инструмента
Где автоматизировать 
• Управление ПО, версии и конфигурация сервисов 
– установка/удаление/обновление пакетов 
– изменение файлов конфигурации 
– управление сервисами (start/stop/reload/restart) 
● Развертывание репликации 
– установка пакетов 
– конфигурирование сервисов 
– запуск сервисов 
– проверка успешности
Где автоматизировать 
• Балансировка запросов от приложения 
– изменения конфигурации 
– service restart (haproxy,pgpool-II)
Где автоматизировать 
• Switchover/Failover 
• pre-run check 
– проверка соединений (с клиентов/бэкендов, между узлами) 
– приостановка соединений (pgbouncer) 
– переключение бэкендов 
• switchover/failover (restartful или restartless) 
• post-run checks 
– проверка успешности (соединение, запись тестовой 
таблицы) 
– возобновление соединений
Где автоматизировать 
• Обновление и upgrade (очень деликатно) 
• pre-update задачи 
– остановить приложения 
– перевести бэкенды на другие серверы 
– отменить выполняющиеся транзакции 
• update/upgrade 
• post-update задачи 
– вернуть всех обратно (клиенты, бэкенды)
Где НЕ автоматизировать 
• Анализ отчетов и мониторинг 
– индивидуальный анализ запросов 
– ручная коррекция запросов 
– создание индексов 
• Routine maintenance 
– поиск и удаление неиспользуемых/дублирующихся индексов 
– обнаружение и устранение bloat 
• Резервное копирование и валидация бэкапов 
– здесь легко справится cron
Инструменты. 
• shell/perl/python/... + ssh/pdsh/clusterssh/... 
• puppet, chef, cfengine, salt, ansible, ...
Инструменты. 
• Shell/Perl/Python/... + ssh/pdsh/clusterssh/... 
– самостоятельная поддержка 
– отсутствие регламента написания кода 
– высокая вероятность ошибок 
– высокие административные издержки
Инструменты. 
• Chef/Puppet/Cfengine/Salt/Ansible 
– унификация инфраструктуры 
– единообразие версий, конфигов, точек и опций 
монтирования, и т.д. 
– хорошо приспособлены для работы в гетерогенных 
инфраструктурах 
– поддержка community 
– дополнительные затраты на сервера 
– снижение административных издержек 
– веб-интерфейс (как правило на коммерческой основе)
Проблема выбора. 
• Chef/Puppet/CFEngine 
– ориентированы на разработчиков 
– высокие требования к знанию языка описания рецептов 
– длинная кривая обучения 
– архитектура клиент/сервер
Проблема выбора. 
• Salt/Ansible 
– ориентированы на системных администраторов 
• Salt 
– архитектура клиент/сервер 
– надежен, мастер-сервера хорошо масштабируются 
• Ansible 
• agentless архитектура, нет выделенного сервера для хранения 
рецептов 
• нужно грамотно организовать доступ к репозиторию 
• до жути простой (extremely simple)
Как начать это делать. 
• определения круга и перечня задач 
• оценка времени затрачиваемого на задачи 
• выбор инструмента 
– есть ли ресурсы на развертывание 
– есть ли время на изучение 
• написание рецептов на тестовом окружении 
– наработка опыта эксплуатации 
– убеждение подходит ли оно нам или нет 
• написание рецептов для production
Horror stories. 
• выполнение задач не там где это должно быть 
• Помещение левых серверов в пул балансировки 
• Ошибки в регулярных выражениях 
• pg_upgrade: Удаление строй директории до запуска сервиса 
• ALTER TABLE ... ADD COLUMN ... DEFAULT ...; 
• Coworker says "I'm going to do some clean-up on the server." Two 
minutes later, "Oh crap. I had removed pg_xlog directory" 
• Деплой на staging с production конфигами 
• Случайная вставка «init 6 » в корневое окно cssh. 
• Ложный запуск autofailover процедуры
Lessons learned. 
• Наличие дежурных инженеров (администраторы, разработчики) 
• Наличие отлаженных процедур по устранению аварийных 
ситуаций (runbooks) 
• Наличие тестового окружения для проверки 
• Семь раз проверь, один — отрежь 
• Никакая техника не спасет если в кабине сидит обезьяна (с)
Вопросы?
Спасибо! 
• http://www.postgresql-consulting.com 
• alexey.lesovsky@postgresql-consulting.com

More Related Content

What's hot (20)

Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Ontico
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Ontico
 
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
Ontico
 
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Ontico
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторинга
Константин Никифоров
 
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
Ontico
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Ontico
 
Mysql vs postgresql
Mysql vs postgresql
Daniel Podolsky
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Ontico
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Ontico
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
Ontico
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Ontico
 
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Ontico
 
My talk at Highload++ 2015
My talk at Highload++ 2015
Alex Chistyakov
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Ontico
 
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Ontico
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Ontico
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
Ontico
 
Денис Иванов
Денис Иванов
CodeFest
 
RootConf 2015
RootConf 2015
Evgeny Uskov
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Ontico
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Ontico
 
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
Ontico
 
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Ontico
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторинга
Константин Никифоров
 
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
Ontico
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Ontico
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Ontico
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Ontico
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
Ontico
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Ontico
 
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Ontico
 
My talk at Highload++ 2015
My talk at Highload++ 2015
Alex Chistyakov
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Ontico
 
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Ontico
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Ontico
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
Ontico
 
Денис Иванов
Денис Иванов
CodeFest
 

Similar to PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting) (20)

Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.
Alexey Lesovsky
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
PavelKonotopov
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
AvitoTech
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Nikolay Samokhvalov
 
История небольшого успеха с PostgreSQL – Владимир Бородин
История небольшого успеха с PostgreSQL – Владимир Бородин
Yandex
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
pgdayrussia
 
Postgresql v509
Postgresql v509
luis perez
 
Перевод новостного приложения на БД PostgreSQL
Перевод новостного приложения на БД PostgreSQL
Dmitry Kremer
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
Nikolay Sivko
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Nikolay Samokhvalov
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Yandex
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Yandex
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
Mikhail Chinkov
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Mail.ru Group
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
Daniel Podolsky
 
pgconf.ru 2017
pgconf.ru 2017
Andy Fefelov
 
High Availability в жизни обычного разработчика
High Availability в жизни обычного разработчика
Sumy PHP User Grpoup
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Ontico
 
Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.
Alexey Lesovsky
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
PavelKonotopov
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
AvitoTech
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Nikolay Samokhvalov
 
История небольшого успеха с PostgreSQL – Владимир Бородин
История небольшого успеха с PostgreSQL – Владимир Бородин
Yandex
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
pgdayrussia
 
Postgresql v509
Postgresql v509
luis perez
 
Перевод новостного приложения на БД PostgreSQL
Перевод новостного приложения на БД PostgreSQL
Dmitry Kremer
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
Nikolay Sivko
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Nikolay Samokhvalov
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Yandex
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Yandex
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
Mikhail Chinkov
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Mail.ru Group
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
Daniel Podolsky
 
High Availability в жизни обычного разработчика
High Availability в жизни обычного разработчика
Sumy PHP User Grpoup
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Ontico
 
Ad

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 
Ad

PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)

  • 1. PostgreSQL: Ups, Devops. Алексей Лесовский
  • 2. О себе • Алексей Лесовский • PostgreSQL-Consulting.com • Консалтинг, техническая поддержка, тренинги • Вопросы архитектуры, производительности и масштабирования
  • 3. Мы поговорим: • об актуальности проблемы в сфере управления конфигурациями и автоматизацией задач в рамках эксплуатации СУБД • про задачи обслуживания баз данных • про автоматизацию задач в области обслуживания баз данных • о проблемах связанных с автоматизацией и управлением конфигурациями • о том где нужно и где нельзя использовать автоматизацию • об особенностях инструментов в аспекте применения к СУБД • о том как все это применить на практике • horror stories
  • 4. Актуальность проблемы. • качественный и количественный рост оборудования • необходимость сокращения времени на “деплой” и сопровождение • появление devops практик и инструментов • mission-critical задачи
  • 5. Задачи обслуживания БД. • поддержка конфигурации серверов БД • управление 3rd-party ПО – skytools, pgbouncer, pgpool-II, postgis, tzdata, etc • развертывание репликации – SR/BDR, slony, londiste, bucardo, etc • обновление и upgrade – minor/major update (pg_upgrade)
  • 6. Задачи обслуживания БД. • балансировка запросов от приложения – haproxy, pgpool-II • switchover/failover • анализ отчетов и мониторинг – pgbadger/pgfouine, zabbix/nagios, pgCluu/PoWA • routine maintenance • резервное копирование и валидация резервных копий
  • 7. Задачи обслуживания БД. • Итого: – задачи типовые – задачи ручные
  • 8. Автоматизация задач. • Итого: – "X" < 4: мало серверов - все можно сделать руками – "Х" > 4: много серверов - тут начинается рутина • Автоматизация: – экономит время при выполнении рутинных задач – устраняет вероятность ошибки в процессе настройки – унификация и однобразие внутри инфраструктуры
  • 9. Вероятные проблемы. • Первичные: – База данных это один из важнейших элементов инфраструктуры – Операции DBA зачастую носят единоразовый характер • Вторичные: – Недоверие со стороны штатных администраторов – Гетерогенная инфраструктура – Ограниченные возможности внутри среды
  • 10. Варианты решения. • предварительное тестирование • ad-hoc операции • дипломатия и переговоры • тщательный выбор инструмента
  • 11. Где автоматизировать • Управление ПО, версии и конфигурация сервисов – установка/удаление/обновление пакетов – изменение файлов конфигурации – управление сервисами (start/stop/reload/restart) ● Развертывание репликации – установка пакетов – конфигурирование сервисов – запуск сервисов – проверка успешности
  • 12. Где автоматизировать • Балансировка запросов от приложения – изменения конфигурации – service restart (haproxy,pgpool-II)
  • 13. Где автоматизировать • Switchover/Failover • pre-run check – проверка соединений (с клиентов/бэкендов, между узлами) – приостановка соединений (pgbouncer) – переключение бэкендов • switchover/failover (restartful или restartless) • post-run checks – проверка успешности (соединение, запись тестовой таблицы) – возобновление соединений
  • 14. Где автоматизировать • Обновление и upgrade (очень деликатно) • pre-update задачи – остановить приложения – перевести бэкенды на другие серверы – отменить выполняющиеся транзакции • update/upgrade • post-update задачи – вернуть всех обратно (клиенты, бэкенды)
  • 15. Где НЕ автоматизировать • Анализ отчетов и мониторинг – индивидуальный анализ запросов – ручная коррекция запросов – создание индексов • Routine maintenance – поиск и удаление неиспользуемых/дублирующихся индексов – обнаружение и устранение bloat • Резервное копирование и валидация бэкапов – здесь легко справится cron
  • 16. Инструменты. • shell/perl/python/... + ssh/pdsh/clusterssh/... • puppet, chef, cfengine, salt, ansible, ...
  • 17. Инструменты. • Shell/Perl/Python/... + ssh/pdsh/clusterssh/... – самостоятельная поддержка – отсутствие регламента написания кода – высокая вероятность ошибок – высокие административные издержки
  • 18. Инструменты. • Chef/Puppet/Cfengine/Salt/Ansible – унификация инфраструктуры – единообразие версий, конфигов, точек и опций монтирования, и т.д. – хорошо приспособлены для работы в гетерогенных инфраструктурах – поддержка community – дополнительные затраты на сервера – снижение административных издержек – веб-интерфейс (как правило на коммерческой основе)
  • 19. Проблема выбора. • Chef/Puppet/CFEngine – ориентированы на разработчиков – высокие требования к знанию языка описания рецептов – длинная кривая обучения – архитектура клиент/сервер
  • 20. Проблема выбора. • Salt/Ansible – ориентированы на системных администраторов • Salt – архитектура клиент/сервер – надежен, мастер-сервера хорошо масштабируются • Ansible • agentless архитектура, нет выделенного сервера для хранения рецептов • нужно грамотно организовать доступ к репозиторию • до жути простой (extremely simple)
  • 21. Как начать это делать. • определения круга и перечня задач • оценка времени затрачиваемого на задачи • выбор инструмента – есть ли ресурсы на развертывание – есть ли время на изучение • написание рецептов на тестовом окружении – наработка опыта эксплуатации – убеждение подходит ли оно нам или нет • написание рецептов для production
  • 22. Horror stories. • выполнение задач не там где это должно быть • Помещение левых серверов в пул балансировки • Ошибки в регулярных выражениях • pg_upgrade: Удаление строй директории до запуска сервиса • ALTER TABLE ... ADD COLUMN ... DEFAULT ...; • Coworker says "I'm going to do some clean-up on the server." Two minutes later, "Oh crap. I had removed pg_xlog directory" • Деплой на staging с production конфигами • Случайная вставка «init 6 » в корневое окно cssh. • Ложный запуск autofailover процедуры
  • 23. Lessons learned. • Наличие дежурных инженеров (администраторы, разработчики) • Наличие отлаженных процедур по устранению аварийных ситуаций (runbooks) • Наличие тестового окружения для проверки • Семь раз проверь, один — отрежь • Никакая техника не спасет если в кабине сидит обезьяна (с)