title

text

Алексей Клюкин
Алексей Клюкин Zalando SE Database Engineer
Александр Кукушкин
Александр Кукушкин Zalando SE Database Engineer
14:00 05 февраля
180 мин

Мастер-класс: Управление высокодоступными PostgreSQL кластерами с помощью Patroni

Patroni - это Python-приложение для создания высокодоступных PostgreSQL кластеров на основе потоковой репликации. Оно используется такими компаниями как Red Hat, IBM Compose, Zalando и многими другими. С его помощью можно преобразовать систему из ведущего и ведомых узлов (primary - replica) в высокодоступный кластер с поддержкой автоматического контролируемого (switchover) и аварийного (failover) переключения. Patroni позволяет легко добавлять новые реплики в существующий кластер, поддерживает динамическое изменение конфигурации PostgreSQL одновременно на всех узлах кластера и множество других возможностей, таких как синхронная репликация, настраиваемые действия при переключении узлов, REST API, возможность запуска пользовательских команд для создания реплики вместо pg_basebackup, взаимодействие с Kubernetes и т.д.

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

  • область применения: какие задачи HA успешно решаются Patroni
  • обзор архитектуры
  • создание тестового кластера
  • утилита patronictl
  • изменение конфигурации PostgreSQL для кластера, управляемого Patroni
  • мониторинг с помощью API
  • подходы к переключению клиентов
  • дополнительные возможности: ручное переключение, перезагрузка по расписанию, режим паузы
  • настройка синхронной репликации
  • расширяемость и универсальность
  • частые ошибки и их диагностика

Для полного участия в мастер-классе вам понадобится ноутбук с установленным git, vagrant и virtual box.

Vagrant можно загрузить со страницы https://www.vagrantup.com или установить с помощью пакетов в вашем дистрибутиве. Virtualbox: https://www.vagrantup.com

После установки Vagrant и Virtualbox нужно выполнить:

$ git clone https://github.com/alexeyklyukin/patroni-training
$ cd patroni-training
$ vagrant up

После того, как patroni box поднимется и установит необходимые пакеты к нему можно подключиться с помощью vagrant ssh.

Видео

Другие доклады

  • Игорь Успенский
    Игорь Успенский Rambler&Co Системный администратор
    45 мин

    PostgreSQL SaaS в Rambler&Co

    Rambler&Co - это множество изданий, сервисов и проектов. Появляются новые и растут существующие. Такой среде нужна надежная, отказоустойчивая, масштабируемая, автоматизированная система.

    Расскажу об устройстве нашего PostgreSQL SaaS, какие инструменты и технологии мы используем. Кворум из 3 Дата-центров. Единая точка входа для клиентов на основе динамической маршрутизации. Аварийное переключение мастера. Прозрачное масштабирование на чтение. Создание реплики без нагрузки на кластер. Прозрачный перенос PostgreSQL cluster на другие серверы. Актуализация dev окружения из prod для разработки. Резервное копирование с компрессией и использованием нескольких CPU на стороне database, восстановление одной БД из basebackup. Мониторинг sql запросов.

  • Алексей Лустин
    Алексей Лустин SilverBulleters, LLC CTO
    45 мин

    Docker, PostgreSQL, Продуктив ....

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

    • Какие проблемы решает Docker для PostgreSQL, например PostgreSQLPro.9.6
    • Как работать команде ИТ в условиях использования Docker на разработческих, приемочных и продуктивных контурах
      • Использование хранилища образов и серверов сборок для тестирования самого образа
    • С чем придется столкнуться в продуктиве
      • В части сетевой активности
      • Организации персистентных хранилищ для Docker
      • Дополнительных служб и сервисов
      • В части балансировки и отказоустойчивости
    • Как запустить у себя приложения, использующие PostgreSQL, такие как:
      • SonarQube
      • Gitlab
      • База 1С

  • Олег Бартунов
    Олег Бартунов Postgres Professional генеральный директор
    Никита Глухов
    Никита Глухов Postgres Professional Разработчик
    45 мин

    "Умное" индексирование jsonb

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

    Я расскажу про то, как мы в Postgres Professional улучшили работу с индексами, а именно, добавили возможность использования параметров для их создания. В качестве примера, я расскажу про "умное" индексирование jsonb с помощью нашего расширения jsquery. "Умное" индексирование означает, что можно задавать подмножество jsonb для индексирование с помощью jspath,нового типа данных jsquery, который можно будет указывать в качестве параметра при создании индекса. Таким образом, индекс будет меньше,что положительно скажется на производительности запросов и лучшей конкурентности. Кроме того, параметры к оп классам позволят гибче работать с уже существующими индексами, а также помогут при индекскации jsonb с помощью jsonpath из ожидаемого SQL/JSON.

  • Валерий Косарев
    Валерий Косарев - начальник отдела
    22 мин

    Подключаемое хранилище для больших объектов

    Хранение бинарных данных в таблицах базы данных иногда является хорошим решением для конкретного проекта. Но иногда, в силу изменения условий или недостаточной проработки решения, такое хранение становится настоящей головной болью. И даже если есть понимание, как и где нужно разместить такие данные, переход к новым решениям зачастую очень не прост, часто требуется доработка в прикладном коде и останов системы для миграции. В докладе представляется частное решение подобной проблемы. Разработанный extension позволяет освободить базу от таких данных, перекладывая бинарные данные в хранилище Ceph и не только. Причем прозрачно для приложений.