Всем привет! Прошедший год для пользователей и разработчиков Postgres был очень насыщенным. И 2018-й обещает быть не менее интересным и ярким. Под катом я расскажу об одном из первых громких событий для сообщества — PGConf.Russia 2018, и о том, чем запомнился прошедший год для DBA-команды Avito.
PGConf.Russia 2018: анонс
С 5 по 8 февраля на площадке экономического факультета Московского государственного университета им. М.В. Ломоносова пройдёт PGConf.Russia 2018. Напомню, что это международная техническая конференция по открытой СУБД PostgreSQL, ежегодно собирающая более 500 разработчиков, администраторов баз данных и IT-менеджеров для обмена опытом и профессионального общения. В программе — мастер-классы ведущих мировых экспертов, доклады в три тематических потока, примеры лучшего опыта и разбор ошибок, гостиная разработчиков и блиц-доклады из зала.
Программа
В целом призываю всех внимательно изучить программу, так как вам придется выбирать из трёх потоков тематических докладов. Вот список докладов, на которые я обязательно постараюсь попасть.
Что нам ждать в PG 11?
В 2017 году вышла новая PostgreSQL 10, в которой имеется много новых интересных возможностей. Очень важно понимать, как пользователи восприняли их, как начали использовать, чего ожидать в новой 11-ой версии. Эти и многие другие вопросы Олег Бартунов пообещал рассмотреть на предстоящей конференции в ходе своего доклада.
Credereum — Postgres с поддержкой блокчейн
Александр Коротков расскажет как соединят доказуемость и неизменяемость блокчейна с производительностью и эффективностью традиционных СУБД.
Securing PostgreSQL From External Attack
Брюс Момжиан — о том, как злоумышленники могут похитить пароли, увидеть запросы и их результаты и даже подменить сессии и вернуть ложные данные
Мастер-класс: Управление высокодоступными PostgreSQL кластерами с помощью Patroni
Алексей Клюкин и Александр Кукушкин подробно расскажут, как работает Patroni, продемонстрируют настройку высокодоступных кластеров на его основе, познакомят с различными дополнительными возможностями и диагностикой проблем.
Modern PostgreSQL High Availability
Если вы задумываетесь о реализации автоматического разрешения аварий PostgreSQL и не хотите, чтобы вам звонили по ночам из-за падения мастер-сервера и необходимости переключения на резерв, не пропустите доклад Alvaro Hernandez, который проведет сравнительный обзор решений для PostgreSQL HA.
Подключаемые хранилища
Тема подключаемых хранилищ для PostgreSQL стала уже притчей во языцех. В данном докладе Александром Коротковым будут рассмотрены следующие вопросы: обзор получившегося интерфейса для подключаемых хранилищ; изменения в ядре PostgreSQL, которые потребовались для реализации данного интерфейса; текущие и потенциальные применения данного интерфейса, включая heap с undo-логом и in-memory OLTP движок; текущее состояние патчей и перспектива их принятия в ядро; дальнейшее развитие интерфейса с целью расширения возможностей подключаемых хранилищ (columnar, index-organized, LSM и т.д.).
Кроме того, нас ждёт сессия блиц-выступлений из зала. Если вы не успели подать заявку на доклад, у вас есть шанс поделиться своим опытом. И, конечно, в программе есть множество других очень интересных выступлений.
Avito на PGConf.Russia 2018
DBA Avito c момента основания конференции постоянно принимают в ней участие. В этот раз мы хотим поделиться результатами нашего исследования: «Кейсы использования логической репликации для восстановления данных в PostgreSQL 10». Данный доклад основан на исследовании, которое я, Михаил Тюрин и Сергей Бурладян начали проводить, когда вышла alpha-версия PostgreSQL 10 и продолжаем по сегодняшний день.
В докладе мы с Михаилом Тюриным покажем, как наши кейсы восстановления и согласования данных после аварий для Londiste (PGQ, в частности) в распределенных системах обработки данных можно реализовать на новой подсистеме логической репликации в PostgreSQL 10. В текущей реализации репликации «из коробки» это нетривиальные решения.
Мы можем открыть ряд issues в community, для того, чтобы была возможность проще реализовывать механизмы восстановления — так же просто, как настройка логической репликации в 10-ке. Реализация наших решений связана с проигрыванием событий очереди репликации, сменой позиции получения событий подписчика относительно источника репликации, «перемоткой» подписчика из недостижимого «будущего» к позиции источника, оказавшегося в «прошлом» относительно получателей после аварии:
- переинициализация подписчика из другого подписчика;
- механизм REDO на источнике — реализация «rewind» репликационной очереди;
- механизм UNDO — реализация восстановления на стороне потребителя репликации.
Avito и PostgreSQL: ретро-2017
Пока мы все ждем грядущего события — расскажу про 2017 год, жизнь Postgres community и нашего (Avito) участия в ней.
В марте 2017 на PGConf.Russia 2017 Дмитрий Вагин поведал о том, как Avito собирает и мониторит нагрузку на базы данных. Из доклада можно узнать, как мы отправляем метрики из хранимых процедур в Grafana, собираем метрики pg_stat* как они отображаются в Grafana. Примеры из жизни — в этом видео.
В мае 2017 мне удалось реализовать давнюю мечту и посетить PGCon 2017 в канадской Оттаве. Это самая первая ежегодная конференция пользователей и разработчиков PostgreSQL, которая проходит начиная с 2007 года.
Очень атмосферное место для встреч с коллегами, обсуждения, построения отношений, изучения ценной информации и, как правило, бесед о работе, которая происходит с PostgreSQL. День «Unconference» оставил самые яркие впечатления о себе, да и в целом вся конференция больше похожа на большую планерку коллег-друзей.
Один из самых запомнившихся докладов: Corruption War Stories Real-Life Corruption Issues and Recovery. А в завершение — благотворительный charity-auction от Dan Langille.
Если вы посетите данную конференцию, останьтесь на это событие — поверьте, будет масса впечатлений.
Наш коллега Виктор Ягофаров сделал доклад «PgBouncer и 20000 транзакций в секунду на одной машине: тонкая настройка, хаки, решение обычных и необычных проблем» на PG DAY Russia 17, PostgresOpen 2017 и Swiss PGDay 2017.
Swiss PGDay 2017
… и отметил, что у наших конференций PG DAY RUSSIA и PGConf.Russia очень высокий уровень организации и докладов, во многом даже превосходящий Европу и Америку.
В сентябре, как помнят некоторые читатели блога, мы организовали PGHACK.
Это соревнование немного похоже на конкурсы для специалистов по информационной безопасности, CTF. Отличие в том, что PGHACK был разработан нами с учётом тех задач, с которыми сталкиваются специалисты по работе с базами данных. И это не только соревнование, но и профессиональное общение. Мы не слышали, чтобы кто-то проводил подобные тематические мероприятия в таком формате, это было первое соревнование подобного рода. Из отзывов участников: 100% из них хотели бы посетить #PGHACK снова.
Как это было:
- много Postgres;
- азарт соревнования;
- огонь в глазах участников;
- крутые дискуссии в кулуарах;
- яркие эмоции и отличное настроение.
Рассказ о нашей собственной платформе, которую собрал Pkorobeinikov, можно посмотреть здесь. Фотоотчет выложен на Facebook. А вот обзор соревнования и разбор задач от нашего победителя Envek.
После этого мы повторили данное мероприятие на HL 2017.
В ожидании релиза Postgres 10 Петр Коробейников перевел Release Notes.
На Highload 2017 мы провели мастер-класс «Логическая репликация и Avito» c Сергеем Бурладяном и Михаилом Тюриным. Можно посмотреть видеозапись с него.
Горячее обсуждение наших исследований после мастер класса HL 2017
Николай Воробьев поделился нашими best practice деплоя кода и инструментом для сбора метрик из plpgsql:
- Версионирование и деплой кода PostgreSQL. Рассказ о том, как писать, тестировать и деплоить сотни баз данных и тысячи хранимых процедур на множество серверов с возможностью быстрого отката в условиях хайлоад 24х7 и не умереть.
- PG Metricus. Сбор метрик из plpgsql кода или как три строчки кода упростили жизнь. Ссылки: блог, pg_metricus_python, pg_metricus_c, https://pgxn.org/dist/pg_metricus.
Поделились нашей разработкой — PostgreSQL RPC built on top of pgq.
Рассказали о «внутренней кухне» Avito на RuPostgres Live с Николаем Самохваловым. Текстовую расшифровку можно почитать здесь.
Диагностировали ряд ошибок и описали их в багрепортах:
- BUG #15006: "make check" error if current user is "user";
- Why standby restores some WALs many times from archive?;
- BUG #14879: Bug connected with table structure modification and trigger function query plan invalidation;
- BUG #14699: Statement trigger and logical replication;
- BUG #14710: Function now() and logical replication;
- Re: Broken hint bits (freeze);
- setReadOnly does not work with pgbouncer and transaction pooling mode #848;
- DBE-5693 Respect the default search_path again;
- Debian Bug report logs — #868367. postgresql-common: standby cannot start with "recovery.conf file found in config directory";
- Invalidation pg catalog cache in trigger functions.
Нашли ошибку работы Listen/Notify через pgbouncer, и Сергей Бурладян сделал патч для баунсера.
Год 2017 был очень интересным и плодотворным. 2018 обещает быть еще более богатым на события! Как говорится, to be continued. До встречи на PGConf.Russia 2018!