title

text

Дмитрий Сарафанников
Дмитрий Сарафанников Яндекс Разработчик
12:15 07 февраля
45 мин

Как сохранить статистику при мажорном обновлении, и что за это бывает

Ни для кого не секрет, что статистика не переносится при мажорном обновлении. Для небольших и не сильно нагруженных баз это не проблема, можно быстро собрать новую статистику. Но у нас есть базы объемом порядка 5ТБ и нагрузкой порядка 100k rps, для которых это стало большой проблемой: взлетая без статистики, реплики даже не могли накатывать WAL. В своем докладе расскажу, на какие хитрости мы пошли, чтобы произвести обновление этих баз в условиях требований 100% доступности read only, о том, какие ошибки допустили, и о том как эти ошибки мучительно исправляли. Результатом этих ошибок стало расширение pg_dirty_hands, в котором мы будем собирать различные хаки, которые можно назвать «фол последней надежды».

Слайды

Видео

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

  • Сергей Ким
    Сергей Ким Ingram Micro Cloud Software Architect
    Вадим Яценко
    Вадим Яценко Tantor Lab Генеральный директор
    45 мин

    PostgreSQL High Availability кластер для Enterprise

    В последнее время PostgreSQL все чаще используется для Enterprise. Наша компания Ingram Micro Cloud была одной из первых, кто сделал это. Мы уже много лет используем PostgreSQL в качестве основной СУБД для наших продуктов. В докладе мы хотим рассказать об эволюции нашего High Availability (HA) кластера PostgreSQL: как мы в сжатые сроки внедряли решение на pgpool-II, писали failover сценарии, тестировали Postgres-XL и придумывали необычные конфигурации Stolon. Немного поговорим о проблемах балансировки нагрузки, пуллинга соединений и бекапировании.

  • Александр Коротков
    Александр Коротков Postgres Professional Руководитель разработки
    45 мин

    Credereum – Postgres с поддержкой блокчейн

    Соединяем доказуемость и неизменяемость блокчейна с производительностью и эффективностью традиционных СУБД.

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

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

    Мы объясним, почему PostgreSQL является подходящей основной для проекта Credereum, а также расскажем, что потребовалось доработать в постгресе для поддержки цифровых подписей и криптографического хранилища данных.

  • Eren Basak
    Eren Basak Citus Data Software Development Engineer
    45 мин

    Использование PITR в распределенных cистемах на базе PostgreSQL

    В Postgres есть возможность восстановления данных на момент времени (PITR), которая позволяет нам "отправляться" в прошлое. В этом докладе мы обсудим, какие существуют основные сценарии использования этой функциональности, как подготовить базу данных к восстановлению на момент времени, настроив хорошую систему бэкапов и транcляции WAL-файлов, а также рассмотрим конкретные примеры. Мы подробнее остановимся на том, как применять PITR на распределенных системах и кластерах с шардингом, затронув типичные проблемы подобных конфигураций, такие как разница во времени, и предложим возможные способы их решения - например, двухфазный коммит и pg_create_restore_point.

  • Алексей Клюкин
    Алексей Клюкин Zalando SE Database Engineer
    Александр Кукушкин
    Александр Кукушкин Zalando SE Database Engineer
    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.