SlideShare a Scribd company logo
Перевод новостного приложения
на базу данных PostgreSQL
Meetup в Mail.ru
3 ноября 2015
Дмитрий Кремер
Администратор баз данных
E-mail: d.kremer@rian.ru
jabber: dmitry.kremer@gmail.com
#PostgreSQLRussia
Title:mail.ru.eps
Creator:Adobe Illustrator(R) 15.0
CreationDate:7/11/2010
LanguageLevel:2
МИА «Россия сегодня»
● Ведущее международное новостное агентство с 1941 года (тогда СовИнформБюро)
● Крупнейший поставщик новостного и медиа-контента в Российской Федерации (бренды РИА Новости и
Sputnik News)
● Фотохостинг Олимпиады в Сочи 2014
● Десятки корреспондентов по всей России
● Современные мультимедиа-прессцентры в Москве и Симферополе
● Платформы в социальных сетях
● Производство и распространение фотоконтента,инфографики,контента для мобильных приложений.
Дмитрий Кремер
● Опыт работы с различными базами данных в качестве разработчика и системного администратора с 1999 года.
● Непрерывный опыт работы с БД Oracle c 2007 года
● Oracle Certified Professional 9i,10g
● Начал работать с PostgreSQL в мае 2015 года.
Особенности новостного приложения
● Работа в режиме 24/7.Прерывание работы сайтов должна стремиться к нулю.
Прерывание сервисов выпуска допустимо на минуты в периоды минимальной
нагрузки.
● Использование движка (структур данных и кода приложений) собственной разработки,
стандартизация кодовой базы проектов.
● Трёхзвенная архитектура —бизнес-логика на сервере приложений
● Использование преимущестенно свежих данных (partitioning)
● Многоязычность (UTF-8)
● Необходимость использования полнотекстового поиска (Solr, tsearch2 и т. д.)
● Solr —поиск на сайте
● tsearch2 —поиск в редакторском интерфейсе
Требования к переводу
● Избежать деградации производительности и отказоустойчивости системы.
● Избежать существенной деградации уровня контроля над системой,мониторинга и
стредств разрешения проблем (troubleshooting).
● По возможности не касаться структуры БД —одно из требований миграции.
● Все изменения должны быть максимально прозрачными для движка приложения.
● Минимизация простоя.
● Предварительная подготовка структуры БД.
● Использование собственных скриптов.
● Миграция данных + накат дэльты
Особенности конвертации БД
● Серьезное отличие средств и методик диагностики проблем и мониторинга
● Использование пула соединений pgbouncer в транзакционном режиме
● Необходимость сопоставления типов (различные варианты хранения числовых
значений,дат и т.д.)
● Автоматическая конвертация исключительно структур данных без хранимых объектов.
Использование Ora2Pg для получения первичного варианта структур данных.
● В исходной БД и PostgreSQL данные об объектах в словаре (dictionary и
information_schema + pg_catalog) хранятся в разных регистрах.Dictionary —в верхнем,
information_schema + pg_catalog —в нижнем.Поэтому использование кавычек в
названиях объектов должно быть объектом пристального внимания!!!
Производительность системы
● 40+ проектов (баз данных) на одном сервере БД.
● 124 миллиона транзакций в сутки
● 8 тысяч запросов в секунду
● 1200 DML операций в секунду
● 300+ vacuum операций в сутки
● Среднее время запросов 5ms
Особенности настройки БД
● Авторизация и аутентификация пользователей
● Настройка autovacuum (согласно презентации Ильи Космодемьянского)
http://www.slideshare.net/PostgreSQL-Consulting/postgresql-meetup-berlin-at-zalando-hq
● Агрессивные настройки в БД
● Понижение приоритета процесса autovacuum в операционной системе
● Настройка streaming replication
● Использование шаблонов базы данных для развёртывания стандартных проектов
● Логи пишутся на syslog-сервер
Авторизация и аутентификация пользователей
● Аутентификация пользователей через pgbouncer
● Хеши паролей пользователей хранятся не в БД,а в конфигурационном файле pgbouncer
● Пользователи с привилегиями DDL-операций соединяются с БД только локально из ssh-
сессии или ssh-тунеля (поддерживается EMS SQL Manager for PostgreSQL)
● Пользователь для реплики создаётся исключительно с правами replication без права
login.Это единственный пользователь,который соединяется с БД удалённо минуя
pgbouncer.В pg_hba.conf соединение разрешено только между реплицируемыми нодами
и сервером бэкапа.
● Авторизация пользователей
● Для приложений каждого проекта создаётся свой пользователь с минимальными
привилегиями
● Для пользователей DevOps создана соответствующая роль-владелец объектов без права
login от которой наследуются привилегии для конкретных пользователей
Настройка streaming replication
● Симметричная конфигурация
● Отказ от триггерного файла, ручное переключение ролей репликации, безшовный
переход с мастер-сервера на сервер реплики (standby) без смены timeline
● wal_level = hot_standby
wal_keep_segments = 500
hot_standby = on
hot_standby_feedback = on
Backup и PITR-сервер
● Доставка wal-логов с использованием демона lsyncd и подсстемы ядра Linux
обработки событий файловой системы inotify.
● После очистки каталога wal-огов на мастере демон lsyncd нужно перезапустить с
проверкой очистки дочерних ssh-процессов,а лучше остановить,почистить,запустить
lsyncd
● Резервное копирование с использованием pg_basebackup с опцией --xLog —создание
бэкапа, готового к восстановлению.
● Полное дублирование компонентов архитектуры
● Использование Point In Time Recovery (PITR) сервера для замены функционала Oracle
Flashback Database (не является аналогом этой технологии)
● Использование pg_switch_xlog() для создания точки восстановления.
Доставка wal-логов с использованием lsyncd
Конфигурация lsyncd
#cat lsyncd/lsyncd.conf.template
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd-status.log",
nodaemon = false,
statusInterval = 20
}
sync {
default.rsync,
source="@@arch_dir@@",
target="@@slave_host@@:@@wal_dir@@",
rsync = {
binary = "/usr/bin/rsync",
rsh = "/usr/bin/ssh -l postgres -i /data/home/postgres/.ssh/id_rsa -o StrictHostKeyChecking=no",
archive = true,
compress = false,
owner = true,
perms = true,
whole_file = false,
checksum = true
},
delete = false
}
sync {
default.rsync,
source="@@arch_dir@@",
target="@@pitr_host@@:/data/bckp/@@short_name@@/pgwal/",
rsync = {
binary = "/usr/bin/rsync",
rsh = "/usr/bin/ssh -l postgres -i /data/home/postgres/.ssh/id_rsa -o StrictHostKeyChecking=no",
archive = true,
compress = false,
owner = true,
perms = true,
whole_file = false,
checksum = true
},
delete = false
}
Мониторинг и производительность
● Использование Zabbix
● За основу взят шаблон https://github.com/lesovsky/zabbix-extensions
● Доработка дискавера БД+таблица
● Использование pg_buffercache и pg_stat_statements
● Выставить параметры в postgresql.conf:
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = all
● Использование pgBadger (объём логов,ротация)
● pgBadger установлен на syslog-серверах
● Ротация логов каждый час: инкрементальное добавление данных в отчёт,ротация и сжатие часового лога
Благодарности:
● Сергею Томулевичу —за помощь в подготовке выступления
● Алексею Лесовскому —за шаблон мониторинга PostgreSQL на Zabbix
● Николаю Самохвалову —за приглашение на мероприятие в качестве спикера.
Спасибо за внимание!
Вопросы?
Meetup в Mail.ru
3 ноября 2015
Дмитрий Кремер
Администратор баз данных
E-mail: d.kremer@rian.ru
jabber: dmitry.kremer@gmail.com
#PostgreSQLRussia
Title:mail.ru.eps
Creator:Adobe Illustrator(R) 15.0
CreationDate:7/11/2010
LanguageLevel:2
Ad

Recommended

Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...
Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...
Mail.ru Group
 
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Mail.ru Group
 
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Mail.ru Group
 
Перевод новостного приложения на БД PostgreSQL
Перевод новостного приложения на БД PostgreSQL
Dmitry Kremer
 
Дмитрий Долгов
Дмитрий Долгов
CodeFest
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
Ontico
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
Ontico
 
Константин Осипов
Константин Осипов
CodeFest
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQL
Yandex
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
Hacking PostgreSQL. Обзор архитектуры.
Hacking PostgreSQL. Обзор архитектуры.
Anastasia Lubennikova
 
Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL
Anastasia Lubennikova
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Ontico
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Ontico
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
Alexey Vasiliev
 
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Dev2Dev
 
Андрей Лузин
Андрей Лузин
CodeFest
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 
Ivan Kotlyar. PostgreSQL in web applications
Ivan Kotlyar. PostgreSQL in web applications
DrupalSib
 
История успеха Яндекс.Почты
История успеха Яндекс.Почты
dev1ant
 
Avito Stachka 2012
Avito Stachka 2012
Roman Pavlushko
 
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
2ГИС Технологии
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
Ontico
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Alexey Zinoviev
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Ontico
 
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Ontico
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Ontico
 
Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»
Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»
Mail.ru Group
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
pgdayrussia
 

More Related Content

What's hot (20)

Константин Осипов
Константин Осипов
CodeFest
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQL
Yandex
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
Hacking PostgreSQL. Обзор архитектуры.
Hacking PostgreSQL. Обзор архитектуры.
Anastasia Lubennikova
 
Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL
Anastasia Lubennikova
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Ontico
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Ontico
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
Alexey Vasiliev
 
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Dev2Dev
 
Андрей Лузин
Андрей Лузин
CodeFest
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 
Ivan Kotlyar. PostgreSQL in web applications
Ivan Kotlyar. PostgreSQL in web applications
DrupalSib
 
История успеха Яндекс.Почты
История успеха Яндекс.Почты
dev1ant
 
Avito Stachka 2012
Avito Stachka 2012
Roman Pavlushko
 
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
2ГИС Технологии
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
Ontico
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Alexey Zinoviev
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Ontico
 
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Ontico
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Ontico
 
Константин Осипов
Константин Осипов
CodeFest
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQL
Yandex
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
Hacking PostgreSQL. Обзор архитектуры.
Hacking PostgreSQL. Обзор архитектуры.
Anastasia Lubennikova
 
Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL
Anastasia Lubennikova
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Ontico
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Ontico
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
Alexey Vasiliev
 
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Dev2Dev
 
Андрей Лузин
Андрей Лузин
CodeFest
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 
Ivan Kotlyar. PostgreSQL in web applications
Ivan Kotlyar. PostgreSQL in web applications
DrupalSib
 
История успеха Яндекс.Почты
История успеха Яндекс.Почты
dev1ant
 
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
2ГИС Технологии
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
Ontico
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Alexey Zinoviev
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Ontico
 
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Ontico
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Ontico
 

Viewers also liked (17)

Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»
Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»
Mail.ru Group
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
pgdayrussia
 
PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Косм...
PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Косм...
pgdayrussia
 
Масштабирование баз данных
Масштабирование баз данных
SQALab
 
Sequence mining
Sequence mining
Dmitrii Ignatov
 
Поиск частых множеств признаков (товаров) и ассоциативные правила
Поиск частых множеств признаков (товаров) и ассоциативные правила
Dmitrii Ignatov
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
Ontico
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
Михаил Тюрин
 
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Ontico
 
Потоковая репликация PostgreSQL
Потоковая репликация PostgreSQL
DevOWL Meetup
 
My talk on administering PostgreSQL
My talk on administering PostgreSQL
Alex Chistyakov
 
Advanced .NET API (Ewout)
Advanced .NET API (Ewout)
Ewout Kramer
 
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Ontico
 
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
Ontico
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
Ontico
 
To skoda
To skoda
langdon1984
 
Supersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data Analytics
Supersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data Analytics
mason_s
 
Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»
Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»
Mail.ru Group
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
pgdayrussia
 
PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Косм...
PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Косм...
pgdayrussia
 
Масштабирование баз данных
Масштабирование баз данных
SQALab
 
Поиск частых множеств признаков (товаров) и ассоциативные правила
Поиск частых множеств признаков (товаров) и ассоциативные правила
Dmitrii Ignatov
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
Ontico
 
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Ontico
 
Потоковая репликация PostgreSQL
Потоковая репликация PostgreSQL
DevOWL Meetup
 
My talk on administering PostgreSQL
My talk on administering PostgreSQL
Alex Chistyakov
 
Advanced .NET API (Ewout)
Advanced .NET API (Ewout)
Ewout Kramer
 
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Ontico
 
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
Ontico
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
Ontico
 
Supersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data Analytics
Supersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data Analytics
mason_s
 
Ad

Similar to Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного web-приложения на базе PostgreSQL» (20)

История небольшого успеха с PostgreSQL – Владимир Бородин
История небольшого успеха с PostgreSQL – Владимир Бородин
Yandex
 
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
it-people
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кода
Anastasia Lubennikova
 
PostgreSQL Streaming Replication
PostgreSQL Streaming Replication
Alexey Lesovsky
 
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Ontico
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
pgdayrussia
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
PavelKonotopov
 
PostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. Молодёжно
Vladislav Bezverhiy
 
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Aleksander Alekseev
 
Postgresql v509
Postgresql v509
luis perez
 
Postgre Sql в веб приложениях иван золотухин
Postgre Sql в веб приложениях иван золотухин
Media Gorod
 
Scaling PostgreSQL
Scaling PostgreSQL
Дмитрий Васильев
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
Postgres
Postgres
Виктор Тыщенко
 
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
Nikolay Samokhvalov
 
Введение в современную PostgreSQL. Часть 1
Введение в современную PostgreSQL. Часть 1
Dzianis Pirshtuk
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Ontico
 
SECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open Source
SECON
 
Миграция данных из Oracle в Postgres
Миграция данных из Oracle в Postgres
CUSTIS
 
История небольшого успеха с PostgreSQL – Владимир Бородин
История небольшого успеха с PostgreSQL – Владимир Бородин
Yandex
 
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
it-people
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кода
Anastasia Lubennikova
 
PostgreSQL Streaming Replication
PostgreSQL Streaming Replication
Alexey Lesovsky
 
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Ontico
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
pgdayrussia
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
PavelKonotopov
 
PostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. Молодёжно
Vladislav Bezverhiy
 
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Aleksander Alekseev
 
Postgresql v509
Postgresql v509
luis perez
 
Postgre Sql в веб приложениях иван золотухин
Postgre Sql в веб приложениях иван золотухин
Media Gorod
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
Nikolay Samokhvalov
 
Введение в современную PostgreSQL. Часть 1
Введение в современную PostgreSQL. Часть 1
Dzianis Pirshtuk
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Ontico
 
SECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open Source
SECON
 
Миграция данных из Oracle в Postgres
Миграция данных из Oracle в Postgres
CUSTIS
 
Ad

More from Mail.ru Group (20)

Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Mail.ru Group
 
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
Mail.ru Group
 
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Mail.ru Group
 
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Mail.ru Group
 
Управление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон Викторов
Mail.ru Group
 
DAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга Свиридова
Mail.ru Group
 
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Mail.ru Group
 
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
Mail.ru Group
 
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
Mail.ru Group
 
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий Остапенко
Mail.ru Group
 
AMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей Пешков
Mail.ru Group
 
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Mail.ru Group
 
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Mail.ru Group
 
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Mail.ru Group
 
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Mail.ru Group
 
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Mail.ru Group
 
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Mail.ru Group
 
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Mail.ru Group
 
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Mail.ru Group
 
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Mail.ru Group
 
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Mail.ru Group
 
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
Mail.ru Group
 
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Mail.ru Group
 
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Mail.ru Group
 
Управление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон Викторов
Mail.ru Group
 
DAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга Свиридова
Mail.ru Group
 
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Mail.ru Group
 
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
Mail.ru Group
 
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
Mail.ru Group
 
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий Остапенко
Mail.ru Group
 
AMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей Пешков
Mail.ru Group
 
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Mail.ru Group
 
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Mail.ru Group
 
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Mail.ru Group
 
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Mail.ru Group
 
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Mail.ru Group
 
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Mail.ru Group
 
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Mail.ru Group
 
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Mail.ru Group
 
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Mail.ru Group
 

Recently uploaded (7)

Saint Charbel,  Maronite monk and priest from Lebanon (Russian).pptx
Saint Charbel,  Maronite monk and priest from Lebanon (Russian).pptx
Martin M Flynn
 
FactoryTalk View Site Edition Руководство пользователя Том 1 Allen-Bredley.
FactoryTalk View Site Edition Руководство пользователя Том 1 Allen-Bredley.
xqtsxflc938
 
VBA для чайников 3rd Edition Steve Cummings
VBA для чайников 3rd Edition Steve Cummings
fnupzgprv4318
 
Milestones in analog and digital computing vol 1 3rd Edition Herbert Bruderer
Milestones in analog and digital computing vol 1 3rd Edition Herbert Bruderer
bjozmwfwh2753
 
PowerPoint 2003 for Dummies 1st Edition Doug Lowe
PowerPoint 2003 for Dummies 1st Edition Doug Lowe
yexvsrzykn2676
 
Газовая промышленность Газовая промышленность
Газовая промышленность Газовая промышленность
sabetovagulmaral
 
Bondarenko, Maria (2020, February). Representation of Motion and Direction in...
Bondarenko, Maria (2020, February). Representation of Motion and Direction in...
MashaBondarenko4
 
Saint Charbel,  Maronite monk and priest from Lebanon (Russian).pptx
Saint Charbel,  Maronite monk and priest from Lebanon (Russian).pptx
Martin M Flynn
 
FactoryTalk View Site Edition Руководство пользователя Том 1 Allen-Bredley.
FactoryTalk View Site Edition Руководство пользователя Том 1 Allen-Bredley.
xqtsxflc938
 
VBA для чайников 3rd Edition Steve Cummings
VBA для чайников 3rd Edition Steve Cummings
fnupzgprv4318
 
Milestones in analog and digital computing vol 1 3rd Edition Herbert Bruderer
Milestones in analog and digital computing vol 1 3rd Edition Herbert Bruderer
bjozmwfwh2753
 
PowerPoint 2003 for Dummies 1st Edition Doug Lowe
PowerPoint 2003 for Dummies 1st Edition Doug Lowe
yexvsrzykn2676
 
Газовая промышленность Газовая промышленность
Газовая промышленность Газовая промышленность
sabetovagulmaral
 
Bondarenko, Maria (2020, February). Representation of Motion and Direction in...
Bondarenko, Maria (2020, February). Representation of Motion and Direction in...
MashaBondarenko4
 

Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного web-приложения на базе PostgreSQL»

  • 1. Перевод новостного приложения на базу данных PostgreSQL Meetup в Mail.ru 3 ноября 2015 Дмитрий Кремер Администратор баз данных E-mail: [email protected] jabber: [email protected] #PostgreSQLRussia Title:mail.ru.eps Creator:Adobe Illustrator(R) 15.0 CreationDate:7/11/2010 LanguageLevel:2
  • 2. МИА «Россия сегодня» ● Ведущее международное новостное агентство с 1941 года (тогда СовИнформБюро) ● Крупнейший поставщик новостного и медиа-контента в Российской Федерации (бренды РИА Новости и Sputnik News) ● Фотохостинг Олимпиады в Сочи 2014 ● Десятки корреспондентов по всей России ● Современные мультимедиа-прессцентры в Москве и Симферополе ● Платформы в социальных сетях ● Производство и распространение фотоконтента,инфографики,контента для мобильных приложений. Дмитрий Кремер ● Опыт работы с различными базами данных в качестве разработчика и системного администратора с 1999 года. ● Непрерывный опыт работы с БД Oracle c 2007 года ● Oracle Certified Professional 9i,10g ● Начал работать с PostgreSQL в мае 2015 года.
  • 3. Особенности новостного приложения ● Работа в режиме 24/7.Прерывание работы сайтов должна стремиться к нулю. Прерывание сервисов выпуска допустимо на минуты в периоды минимальной нагрузки. ● Использование движка (структур данных и кода приложений) собственной разработки, стандартизация кодовой базы проектов. ● Трёхзвенная архитектура —бизнес-логика на сервере приложений ● Использование преимущестенно свежих данных (partitioning) ● Многоязычность (UTF-8) ● Необходимость использования полнотекстового поиска (Solr, tsearch2 и т. д.) ● Solr —поиск на сайте ● tsearch2 —поиск в редакторском интерфейсе
  • 4. Требования к переводу ● Избежать деградации производительности и отказоустойчивости системы. ● Избежать существенной деградации уровня контроля над системой,мониторинга и стредств разрешения проблем (troubleshooting). ● По возможности не касаться структуры БД —одно из требований миграции. ● Все изменения должны быть максимально прозрачными для движка приложения. ● Минимизация простоя. ● Предварительная подготовка структуры БД. ● Использование собственных скриптов. ● Миграция данных + накат дэльты
  • 5. Особенности конвертации БД ● Серьезное отличие средств и методик диагностики проблем и мониторинга ● Использование пула соединений pgbouncer в транзакционном режиме ● Необходимость сопоставления типов (различные варианты хранения числовых значений,дат и т.д.) ● Автоматическая конвертация исключительно структур данных без хранимых объектов. Использование Ora2Pg для получения первичного варианта структур данных. ● В исходной БД и PostgreSQL данные об объектах в словаре (dictionary и information_schema + pg_catalog) хранятся в разных регистрах.Dictionary —в верхнем, information_schema + pg_catalog —в нижнем.Поэтому использование кавычек в названиях объектов должно быть объектом пристального внимания!!!
  • 6. Производительность системы ● 40+ проектов (баз данных) на одном сервере БД. ● 124 миллиона транзакций в сутки ● 8 тысяч запросов в секунду ● 1200 DML операций в секунду ● 300+ vacuum операций в сутки ● Среднее время запросов 5ms
  • 7. Особенности настройки БД ● Авторизация и аутентификация пользователей ● Настройка autovacuum (согласно презентации Ильи Космодемьянского) http://www.slideshare.net/PostgreSQL-Consulting/postgresql-meetup-berlin-at-zalando-hq ● Агрессивные настройки в БД ● Понижение приоритета процесса autovacuum в операционной системе ● Настройка streaming replication ● Использование шаблонов базы данных для развёртывания стандартных проектов ● Логи пишутся на syslog-сервер
  • 8. Авторизация и аутентификация пользователей ● Аутентификация пользователей через pgbouncer ● Хеши паролей пользователей хранятся не в БД,а в конфигурационном файле pgbouncer ● Пользователи с привилегиями DDL-операций соединяются с БД только локально из ssh- сессии или ssh-тунеля (поддерживается EMS SQL Manager for PostgreSQL) ● Пользователь для реплики создаётся исключительно с правами replication без права login.Это единственный пользователь,который соединяется с БД удалённо минуя pgbouncer.В pg_hba.conf соединение разрешено только между реплицируемыми нодами и сервером бэкапа. ● Авторизация пользователей ● Для приложений каждого проекта создаётся свой пользователь с минимальными привилегиями ● Для пользователей DevOps создана соответствующая роль-владелец объектов без права login от которой наследуются привилегии для конкретных пользователей
  • 9. Настройка streaming replication ● Симметричная конфигурация ● Отказ от триггерного файла, ручное переключение ролей репликации, безшовный переход с мастер-сервера на сервер реплики (standby) без смены timeline ● wal_level = hot_standby wal_keep_segments = 500 hot_standby = on hot_standby_feedback = on
  • 10. Backup и PITR-сервер ● Доставка wal-логов с использованием демона lsyncd и подсстемы ядра Linux обработки событий файловой системы inotify. ● После очистки каталога wal-огов на мастере демон lsyncd нужно перезапустить с проверкой очистки дочерних ssh-процессов,а лучше остановить,почистить,запустить lsyncd ● Резервное копирование с использованием pg_basebackup с опцией --xLog —создание бэкапа, готового к восстановлению. ● Полное дублирование компонентов архитектуры ● Использование Point In Time Recovery (PITR) сервера для замены функционала Oracle Flashback Database (не является аналогом этой технологии) ● Использование pg_switch_xlog() для создания точки восстановления.
  • 11. Доставка wal-логов с использованием lsyncd
  • 12. Конфигурация lsyncd #cat lsyncd/lsyncd.conf.template settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd-status.log", nodaemon = false, statusInterval = 20 } sync { default.rsync, source="@@arch_dir@@", target="@@slave_host@@:@@wal_dir@@", rsync = { binary = "/usr/bin/rsync", rsh = "/usr/bin/ssh -l postgres -i /data/home/postgres/.ssh/id_rsa -o StrictHostKeyChecking=no", archive = true, compress = false, owner = true, perms = true, whole_file = false, checksum = true }, delete = false } sync { default.rsync, source="@@arch_dir@@", target="@@pitr_host@@:/data/bckp/@@short_name@@/pgwal/", rsync = { binary = "/usr/bin/rsync", rsh = "/usr/bin/ssh -l postgres -i /data/home/postgres/.ssh/id_rsa -o StrictHostKeyChecking=no", archive = true, compress = false, owner = true, perms = true, whole_file = false, checksum = true }, delete = false }
  • 13. Мониторинг и производительность ● Использование Zabbix ● За основу взят шаблон https://github.com/lesovsky/zabbix-extensions ● Доработка дискавера БД+таблица ● Использование pg_buffercache и pg_stat_statements ● Выставить параметры в postgresql.conf: shared_preload_libraries = 'pg_stat_statements' pg_stat_statements.max = 10000 pg_stat_statements.track = all ● Использование pgBadger (объём логов,ротация) ● pgBadger установлен на syslog-серверах ● Ротация логов каждый час: инкрементальное добавление данных в отчёт,ротация и сжатие часового лога
  • 14. Благодарности: ● Сергею Томулевичу —за помощь в подготовке выступления ● Алексею Лесовскому —за шаблон мониторинга PostgreSQL на Zabbix ● Николаю Самохвалову —за приглашение на мероприятие в качестве спикера.
  • 15. Спасибо за внимание! Вопросы? Meetup в Mail.ru 3 ноября 2015 Дмитрий Кремер Администратор баз данных E-mail: [email protected] jabber: [email protected] #PostgreSQLRussia Title:mail.ru.eps Creator:Adobe Illustrator(R) 15.0 CreationDate:7/11/2010 LanguageLevel:2