SlideShare a Scribd company logo
1 of 25
Download to read offline
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 ...;
Horror stories.
• Coworker says "I'm going to do some clean-up of the logs on the
server." Two minutes later, "Oh crap. I had removed pg_xlog
directory"
• Деплой на staging с production конфигами
• Случайная вставка «init 6 » в главное окно cssh.
Lessons learned.
• Наличие дежурных инженеров (администраторы, разработчики)
• Наличие отлаженных процедур по устранению аварийных
ситуаций (runbooks)
• Наличие тестового окружения для проверки
• Семь раз проверь, один — отрежь
• Никакая техника не спасет если в кабине сидит обезьяна (с).
Вопросы?
Спасибо!
• http://www.postgresql-consulting.com
• http://www.thislinux.org
• alexey.lesovsky@postgresql-consulting.com

More Related Content

What's hot

Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Ontico
 
Thumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - AnsibleThumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - AnsibleAlexey Remnev
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан КупреевOpenVZ
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersAleksey Fomkin
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ruNikolay Samokhvalov
 
Беспроблемная эксплуатация PostgreSQL
Беспроблемная эксплуатация PostgreSQLБеспроблемная эксплуатация PostgreSQL
Беспроблемная эксплуатация PostgreSQLДмитрий Васильев
 
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussiaNikolay Samokhvalov
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Ontico
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Alexey Lesovsky
 
Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL Anastasia Lubennikova
 
Первые шаги с RabbitMQ
Первые шаги с RabbitMQПервые шаги с RabbitMQ
Первые шаги с RabbitMQAlexander Svetkin
 
Hunting for a C++ package manager
Hunting for a C++ package managerHunting for a C++ package manager
Hunting for a C++ package managercorehard_by
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам AnsibleDenis Honig
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоFuenteovejuna
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationAlexey Lesovsky
 
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)Ontico
 

What's hot (20)

Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 
Применяем Ansible
Применяем AnsibleПрименяем Ansible
Применяем Ansible
 
Thumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - AnsibleThumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - Ansible
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru
 
Беспроблемная эксплуатация PostgreSQL
Беспроблемная эксплуатация PostgreSQLБеспроблемная эксплуатация PostgreSQL
Беспроблемная эксплуатация PostgreSQL
 
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
 
Scaling PostgreSQL
Scaling PostgreSQLScaling PostgreSQL
Scaling PostgreSQL
 
PostgreSQL on sas/ssd/nvme/nvdimm
PostgreSQL on sas/ssd/nvme/nvdimmPostgreSQL on sas/ssd/nvme/nvdimm
PostgreSQL on sas/ssd/nvme/nvdimm
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)
 
Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL
 
Первые шаги с RabbitMQ
Первые шаги с RabbitMQПервые шаги с RabbitMQ
Первые шаги с RabbitMQ
 
Hunting for a C++ package manager
Hunting for a C++ package managerHunting for a C++ package manager
Hunting for a C++ package manager
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам Ansible
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей Романенко
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming Replication
 
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
 

Viewers also liked

Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Alexey Lesovsky
 
Linux internals for Database administrators at Linux Piter 2016
Linux internals for Database administrators at Linux Piter 2016Linux internals for Database administrators at Linux Piter 2016
Linux internals for Database administrators at Linux Piter 2016PostgreSQL-Consulting
 
PostgreSQL Meetup Berlin at Zalando HQ
PostgreSQL Meetup Berlin at Zalando HQPostgreSQL Meetup Berlin at Zalando HQ
PostgreSQL Meetup Berlin at Zalando HQPostgreSQL-Consulting
 
Nine Circles of Inferno or Explaining the PostgreSQL Vacuum
Nine Circles of Inferno or Explaining the PostgreSQL VacuumNine Circles of Inferno or Explaining the PostgreSQL Vacuum
Nine Circles of Inferno or Explaining the PostgreSQL VacuumAlexey Lesovsky
 
10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQL10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQLPostgreSQL-Consulting
 
Autovacuum, explained for engineers, new improved version PGConf.eu 2015 Vienna
Autovacuum, explained for engineers, new improved version PGConf.eu 2015 ViennaAutovacuum, explained for engineers, new improved version PGConf.eu 2015 Vienna
Autovacuum, explained for engineers, new improved version PGConf.eu 2015 ViennaPostgreSQL-Consulting
 
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015PostgreSQL-Consulting
 
Best Practices of HA and Replication of PostgreSQL in Virtualized Environments
Best Practices of HA and Replication of PostgreSQL in Virtualized EnvironmentsBest Practices of HA and Replication of PostgreSQL in Virtualized Environments
Best Practices of HA and Replication of PostgreSQL in Virtualized EnvironmentsJignesh Shah
 
Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Alexey Lesovsky
 
PostgreSQL worst practices, version FOSDEM PGDay 2017 by Ilya Kosmodemiansky
PostgreSQL worst practices, version FOSDEM PGDay 2017 by Ilya KosmodemianskyPostgreSQL worst practices, version FOSDEM PGDay 2017 by Ilya Kosmodemiansky
PostgreSQL worst practices, version FOSDEM PGDay 2017 by Ilya KosmodemianskyPostgreSQL-Consulting
 

Viewers also liked (11)

Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.
 
Linux internals for Database administrators at Linux Piter 2016
Linux internals for Database administrators at Linux Piter 2016Linux internals for Database administrators at Linux Piter 2016
Linux internals for Database administrators at Linux Piter 2016
 
PostgreSQL Meetup Berlin at Zalando HQ
PostgreSQL Meetup Berlin at Zalando HQPostgreSQL Meetup Berlin at Zalando HQ
PostgreSQL Meetup Berlin at Zalando HQ
 
Nine Circles of Inferno or Explaining the PostgreSQL Vacuum
Nine Circles of Inferno or Explaining the PostgreSQL VacuumNine Circles of Inferno or Explaining the PostgreSQL Vacuum
Nine Circles of Inferno or Explaining the PostgreSQL Vacuum
 
10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQL10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQL
 
Autovacuum, explained for engineers, new improved version PGConf.eu 2015 Vienna
Autovacuum, explained for engineers, new improved version PGConf.eu 2015 ViennaAutovacuum, explained for engineers, new improved version PGConf.eu 2015 Vienna
Autovacuum, explained for engineers, new improved version PGConf.eu 2015 Vienna
 
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
 
Best Practices of HA and Replication of PostgreSQL in Virtualized Environments
Best Practices of HA and Replication of PostgreSQL in Virtualized EnvironmentsBest Practices of HA and Replication of PostgreSQL in Virtualized Environments
Best Practices of HA and Replication of PostgreSQL in Virtualized Environments
 
Trend Overview
Trend OverviewTrend Overview
Trend Overview
 
Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.
 
PostgreSQL worst practices, version FOSDEM PGDay 2017 by Ilya Kosmodemiansky
PostgreSQL worst practices, version FOSDEM PGDay 2017 by Ilya KosmodemianskyPostgreSQL worst practices, version FOSDEM PGDay 2017 by Ilya Kosmodemiansky
PostgreSQL worst practices, version FOSDEM PGDay 2017 by Ilya Kosmodemiansky
 

Similar to Highload 2014. PostgreSQL: ups, DevOps.

PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)Ontico
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Yandex
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Yandex
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012Alex Chistyakov
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLAlex Chistyakov
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeYehor Herasymchuk
 
Доклад Ильи Сотникова на SPCUA 2012
Доклад Ильи Сотникова на SPCUA 2012Доклад Ильи Сотникова на SPCUA 2012
Доклад Ильи Сотникова на SPCUA 2012Lizard Soft
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...rit2011
 
Cовременные подходы организации процессов разработки
Cовременные подходы организации процессов разработкиCовременные подходы организации процессов разработки
Cовременные подходы организации процессов разработкиАлександр Шамрай
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестированияIT61
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙCEE-SEC(R)
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...rit2011
 
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Sergey Xek
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииNikolay Sivko
 
Обеспечение качества: Практические советы
Обеспечение качества: Практические советыОбеспечение качества: Практические советы
Обеспечение качества: Практические советыSQALab
 
Agile days `16 summary
Agile days `16 summaryAgile days `16 summary
Agile days `16 summaryAnton Zhukov
 

Similar to Highload 2014. PostgreSQL: ups, DevOps. (20)

PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
 
Sivko
SivkoSivko
Sivko
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
Chef @DevWeb
Chef @DevWebChef @DevWeb
Chef @DevWeb
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
 
Доклад Ильи Сотникова на SPCUA 2012
Доклад Ильи Сотникова на SPCUA 2012Доклад Ильи Сотникова на SPCUA 2012
Доклад Ильи Сотникова на SPCUA 2012
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
Cовременные подходы организации процессов разработки
Cовременные подходы организации процессов разработкиCовременные подходы организации процессов разработки
Cовременные подходы организации процессов разработки
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестирования
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 
Обеспечение качества: Практические советы
Обеспечение качества: Практические советыОбеспечение качества: Практические советы
Обеспечение качества: Практические советы
 
Agile days `16 summary
Agile days `16 summaryAgile days `16 summary
Agile days `16 summary
 

More from Alexey Lesovsky

Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Alexey Lesovsky
 
Call of Postgres: Advanced Operations (part 5)
Call of Postgres: Advanced Operations (part 5)Call of Postgres: Advanced Operations (part 5)
Call of Postgres: Advanced Operations (part 5)Alexey Lesovsky
 
Call of Postgres: Advanced Operations (part 4)
Call of Postgres: Advanced Operations (part 4)Call of Postgres: Advanced Operations (part 4)
Call of Postgres: Advanced Operations (part 4)Alexey Lesovsky
 
Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Alexey Lesovsky
 
Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Alexey Lesovsky
 
Troubleshooting PostgreSQL with pgCenter
Troubleshooting PostgreSQL with pgCenterTroubleshooting PostgreSQL with pgCenter
Troubleshooting PostgreSQL with pgCenterAlexey Lesovsky
 
GitLab PostgresMortem: Lessons Learned
GitLab PostgresMortem: Lessons LearnedGitLab PostgresMortem: Lessons Learned
GitLab PostgresMortem: Lessons LearnedAlexey Lesovsky
 
Troubleshooting PostgreSQL Streaming Replication
Troubleshooting PostgreSQL Streaming ReplicationTroubleshooting PostgreSQL Streaming Replication
Troubleshooting PostgreSQL Streaming ReplicationAlexey Lesovsky
 
Tuning Linux for Databases.
Tuning Linux for Databases.Tuning Linux for Databases.
Tuning Linux for Databases.Alexey Lesovsky
 
Managing PostgreSQL with PgCenter
Managing PostgreSQL with PgCenterManaging PostgreSQL with PgCenter
Managing PostgreSQL with PgCenterAlexey Lesovsky
 
Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Alexey Lesovsky
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practiceAlexey Lesovsky
 
PostgreSQL Streaming Replication Cheatsheet
PostgreSQL Streaming Replication CheatsheetPostgreSQL Streaming Replication Cheatsheet
PostgreSQL Streaming Replication CheatsheetAlexey Lesovsky
 
PostgreSQL Troubleshoot On-line, (RITfest 2015 meetup at Moscow, Russia).
PostgreSQL Troubleshoot On-line, (RITfest 2015 meetup at Moscow, Russia).PostgreSQL Troubleshoot On-line, (RITfest 2015 meetup at Moscow, Russia).
PostgreSQL Troubleshoot On-line, (RITfest 2015 meetup at Moscow, Russia).Alexey Lesovsky
 
Linux tuning for PostgreSQL at Secon 2015
Linux tuning for PostgreSQL at Secon 2015Linux tuning for PostgreSQL at Secon 2015
Linux tuning for PostgreSQL at Secon 2015Alexey Lesovsky
 

More from Alexey Lesovsky (16)

Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.
 
Call of Postgres: Advanced Operations (part 5)
Call of Postgres: Advanced Operations (part 5)Call of Postgres: Advanced Operations (part 5)
Call of Postgres: Advanced Operations (part 5)
 
Call of Postgres: Advanced Operations (part 4)
Call of Postgres: Advanced Operations (part 4)Call of Postgres: Advanced Operations (part 4)
Call of Postgres: Advanced Operations (part 4)
 
Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)
 
Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)
 
Troubleshooting PostgreSQL with pgCenter
Troubleshooting PostgreSQL with pgCenterTroubleshooting PostgreSQL with pgCenter
Troubleshooting PostgreSQL with pgCenter
 
GitLab PostgresMortem: Lessons Learned
GitLab PostgresMortem: Lessons LearnedGitLab PostgresMortem: Lessons Learned
GitLab PostgresMortem: Lessons Learned
 
Troubleshooting PostgreSQL Streaming Replication
Troubleshooting PostgreSQL Streaming ReplicationTroubleshooting PostgreSQL Streaming Replication
Troubleshooting PostgreSQL Streaming Replication
 
Tuning Linux for Databases.
Tuning Linux for Databases.Tuning Linux for Databases.
Tuning Linux for Databases.
 
Managing PostgreSQL with PgCenter
Managing PostgreSQL with PgCenterManaging PostgreSQL with PgCenter
Managing PostgreSQL with PgCenter
 
Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
 
PostgreSQL Streaming Replication Cheatsheet
PostgreSQL Streaming Replication CheatsheetPostgreSQL Streaming Replication Cheatsheet
PostgreSQL Streaming Replication Cheatsheet
 
Pgcenter overview
Pgcenter overviewPgcenter overview
Pgcenter overview
 
PostgreSQL Troubleshoot On-line, (RITfest 2015 meetup at Moscow, Russia).
PostgreSQL Troubleshoot On-line, (RITfest 2015 meetup at Moscow, Russia).PostgreSQL Troubleshoot On-line, (RITfest 2015 meetup at Moscow, Russia).
PostgreSQL Troubleshoot On-line, (RITfest 2015 meetup at Moscow, Russia).
 
Linux tuning for PostgreSQL at Secon 2015
Linux tuning for PostgreSQL at Secon 2015Linux tuning for PostgreSQL at Secon 2015
Linux tuning for PostgreSQL at Secon 2015
 

Highload 2014. 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 зачастую носят единоразовый характер – ad-hoc операции • Недоверие со стороны штатных администраторов – дипломатия и переговоры • Гетерогенная инфраструктура – тщательный выбор инструмента • Ограниченные возможности внутри среды – тщательный выбор инструмента
  • 10. Где автоматизировать • Управление ПО, версии и конфигурация сервисов – установка/удаление/обновление пакетов – изменение файлов конфигурации – управление сервисами (start/stop/reload/restart) ● Развертывание репликации – установка пакетов – конфигурирование сервисов – запуск сервисов – проверка успешности
  • 11. Где автоматизировать • Балансировка запросов от приложения – изменения конфигурации – service restart (haproxy,pgpool-II)
  • 12. Где автоматизировать • Switchover/Failover • pre-run check – проверка соединений (с клиентов/бэкендов, между узлами) – приостановка соединений (pgbouncer) – переключение бэкендов • switchover/failover (restartful или restartless) • post-run checks – проверка успешности (соединение, запись тестовой таблицы) – возобновление соединений
  • 13. Где автоматизировать • Обновление и upgrade (очень деликатно) • pre-update задачи – остановить приложения – перевести бэкенды на другие серверы – отменить выполняющиеся транзакции • update/upgrade • post-update задачи – вернуть всех обратно (клиенты, бэкенды)
  • 14. Где НЕ автоматизировать • Анализ отчетов и мониторинг – индивидуальный анализ запросов – ручная коррекция запросов – создание индексов • Routine maintenance – поиск и удаление неиспользуемых/дублирующихся индексов – обнаружение и устранение bloat • Резервное копирование и валидация бэкапов – здесь легко справится cron
  • 15. Инструменты. • shell/perl/python/... + ssh/pdsh/clusterssh/... • puppet, chef, cfengine, salt, ansible, ...
  • 16. Инструменты. • Shell/Perl/Python/... + ssh/pdsh/clusterssh/... – высокая гибкость – самостоятельная поддержка – отсутствие регламента написания кода – высокая вероятность ошибок – высокие административные издержки
  • 17. Инструменты. • Chef/Puppet/Cfengine/Salt/Ansible – унификация инфраструктуры – хорошо приспособлены для работы в гетерогенных инфраструктурах – поддержка community – дополнительные затраты на сервера – снижение административных издержек – веб-интерфейс (как правило на коммерческой основе)
  • 18. Проблема выбора. • Chef/Puppet/CFEngine – ориентированы на разработчиков – высокие требования к знанию языка описания рецептов – длинная кривая обучения – архитектура клиент/сервер
  • 19. Проблема выбора. • Salt/Ansible – ориентированы на системных администраторов • Salt – архитектура клиент/сервер – надежен, мастер-сервера хорошо масштабируются • Ansible • agentless архитектура, нет выделенного сервера для хранения рецептов • нужно грамотно организовать доступ к репозиторию • до жути простой (extremely simple)
  • 20. Как начать это делать. • определения круга и перечня задач • оценка времени затрачиваемого на задачи • выбор инструмента – есть ли ресурсы на развертывание – есть ли время на изучение • написание рецептов на тестовом окружении – наработка опыта эксплуатации – убеждение подходит ли оно нам или нет • написание рецептов для production
  • 21. Horror stories. • выполнение задач не там где это должно быть • Помещение левых серверов в пул балансировки • Ошибки в регулярных выражениях • pg_upgrade: Удаление строй директории до запуска сервиса • ALTER TABLE ... ADD COLUMN ... DEFAULT ...;
  • 22. Horror stories. • Coworker says "I'm going to do some clean-up of the logs on the server." Two minutes later, "Oh crap. I had removed pg_xlog directory" • Деплой на staging с production конфигами • Случайная вставка «init 6 » в главное окно cssh.
  • 23. Lessons learned. • Наличие дежурных инженеров (администраторы, разработчики) • Наличие отлаженных процедур по устранению аварийных ситуаций (runbooks) • Наличие тестового окружения для проверки • Семь раз проверь, один — отрежь • Никакая техника не спасет если в кабине сидит обезьяна (с).