34

2015.02.06 PostgreSQL в Яндексе: история успеха №2

  • Upload
    dev1ant

  • View
    242

  • Download
    2

Embed Size (px)

Citation preview

PostgreSQL в Яндексе: история успеха №2

Владимир Бородин

events.yandex.ru/lib/talks/2382

Разработчик

Нужна небольшая табличка, с транзакциями

Первые проблемы

5

Первые проблемы

〉Много мелких изменяющих запросов

〉Очень медленно

〉GDB показал, что виноват WALWriteLock

〉synchronous_commit = off снимает симптомы

〉commit_delay и commit_siblings не помогают

6

Первые решения

〉pg_xlog на отдельном массиве,

〉эта ФС смонтирована с nobarrier,

〉wal_sync_method = fsync

7

Стрельба без приложения

8

Прямо сейчас

9

Менеджер

Нам надо ещё 10 ТБ положить

Детали

〉Хранить надо 30 дней

〉Чем старше данные, тем реже за ними приходят

〉Во все читающие запросы можно добавить время

11

Partitioning

Варианты

〉pg_part

〉pg_partman

〉partition magic

13

pg_partman

14

Обновление функции триггера на мастер-таблице

15

Перекладывание данных с SSD на SATA

Варианты

〉ALTER TABLE foo SET TABLESPACE sata;

〉http://reorg.github.io/pg_repack/

17

Большое количество WAL’ов

18

Решение

〉Средствами БД победить не удалось

〉На помощь пришли cgroups

〉Ограничение на объём данных для группы процессов

19

Решение

20

github.com/reorg/pg_repack/pull/34

Autovacuum to prevent wraparound

22

Autovacuum to prevent wraparound

23

Autovacuum to prevent wraparound

24

PostgreSQL

ERROR: database is not accepting commands to avoid wraparound data loss in database "xivadb"

Autovacuum to prevent wraparound

〉Выключили throttling

〉Последовательный VACUUM таблиц на SATA

26

Бэкапы

27

http://www.postgresql.org/about/news/1566/

Barman 1.4.0

Запрос во все партиции

29

Запрос во все партиции

30

Решение

31

32

Вопросы?

34

Владимир Бородин

Системный администратор

Контакты

@man_brain

http://simply.name

+7 (495) 739 70 00, доб. 7255

[email protected]