Потоковая репликация, которая появилась в 2010 году, стала одной из прорывных фич постгреса и в настоящее время практически ни одна инсталляция не обходится без использования потоковой репликации. Она надежна, легка в настройке, нетребовательна к ресурсам. Однако при всех своих положительных качествах, при её эксплуатации могут возникать различные проблемы и неприятные ситуации. Для диагностики и решения проблем, связанных с потоковой репликацией, есть множество инструментов, как встроенных в PostgreSQL, так и сторонних.
В этом докладе я сделаю обзор доступных инструментов и расскажу, как с помощью этих средств диагностировать различные типы проблем и как устранять их. Рассматривая методы решения, мы также рассмотрим проблемы, которые возникают при эксплуатации потоковой репликации.
Доклад будет полезен DBA и системным администраторам.
2. План
Немного теории или как работает постгресовая репликация.
Troubleshooting tools или что есть у PostgreSQL и сообщества.
Troubleshooting cases — симптомы, проблемы, диагностика, решения.
Итоги, вопросы — ответы.
3. Зачем всё это?
Для лучшего понимания потоковой репликации.
Научиться быстро находить и устранять проблемы.
https://www.slideshare.net/alexeylesovsky/presentations
4. План
Немного теории или как работает постгресовая репликация.
Troubleshooting tools или что есть у PostgreSQL и сообщества.
Troubleshooting cases — симптомы, проблемы, диагностика, решения.
Итоги, вопросы — ответы.
5. Немного теории
Write-Ahead Log (XLOG) — история всех изменений в БД.
● Бэкенды синхронно пишут все изменения в XLOG;
● Либо это делает WAL writer асинхронно.
Каталог pg_xlog/ (pg_wal/) в $DATADIR.
Потоковая репликация основана на XLOG.
6. Немного теории
Write-Ahead Log (XLOG) — история всех изменений в БД. почти;)
● Бэкенды синхронно пишут все изменения в XLOG;
● Либо это делает WAL writer асинхронно.
Каталог pg_xlog/ (pg_wal/) в $DATADIR.
Потоковая репликация основана на XLOG.
7. Немного теории
WAL Sender process (мастер).
WAL Receiver process (реплика).
Startup process (реплика).
9. План
Немного теории или как работает постгресовая репликация.
Troubleshooting tools или что есть у PostgreSQL и сообщества.
Troubleshooting cases — проблемы, симптомы и диагностика.
Итоги, вопросы — ответы.
15. pg_waldump
pg_waldump:
● Декодирует XLOG в человеко-понятный формат;
● Может врать при запущенном постгресе.
● pg_waldump -f -p /wal_10
$(psql -qAtX -c "select pg_walfile_name(pg_current_wal_lsn())")
16. План
Немного теории или как работает постгресовая репликация.
Troubleshooting tools или что есть у PostgreSQL и сообщества.
Troubleshooting cases — проблемы, симптомы и диагностика.
Итоги, вопросы — ответы.
32. Варианты решения
Большой объем WAL:
● Уменьшить объем «изменений» в БД в единицу времени;
● Уменьшить объем записи в WAL в целом:
● full_page_writes = of;
● Увеличить интервал между чекпоинтами.
37. Распухание pg_wal/
Экстренные меры (100% used space)
● Отстрелить долгие CRUD запросы — pg_terminate_backend();
● Уменьшить reserved space ratio (ext filesystems);
● Добавить еще места (LVM, ZFS, etc);
38. Распухание pg_wal/
Экстренные меры (100% used space)
● Отстрелить долгие CRUD запросы — pg_terminate_backend();
● Уменьшить reserved space ratio (ext filesystems);
● Добавить еще места (LVM, ZFS, etc);
● НИКОГДА НИЧЕГО НЕ УДАЛЯТЬ РУКАМИ ИЗ pg_xlog/, pg_wal/
39. Распухание pg_wal/
Что делать дальше:
● Снова проверить workload — CRUD.
● Состояние репликации.
● Уменьшить checkpoints_segments/max_wal_size, wal_keep_segments;
● Удалить слот репликации или починить подписчика;
● Починить WAL archiving;
checkpoint, checkpoint, cheсkpoint...
41. Конфликты восстановления
Основные симптомы — ошибки в логах постгреса или приложения.
● User was holding shared bufer pin for too long.
● User query might have needed to see row versions that must be removed.
● User was holding a relation lock for too long.
● User was or might have been using tablespace that must be dropped.
● User transaction caused bufer deadlock with recovery.
● User was connected to a database that must be dropped.
50. План
Немного теории или как работает постгресовая репликация.
Troubleshooting tools или что есть у PostgreSQL и сообщества.
Troubleshooting cases — проблемы, симптомы и диагностика.
Итоги, вопросы — ответы.
51. Итоги
Проблемы потоковой репликации всегда распределены между хостами
Источниками проблем выступают:
● Недостаток ресурсов, запросы, workload.
Без мониторинга никак.
Встроенные средства нужно знать и уметь.
52. Links
PostgreSQL official documentation – The Statistics Collector
https://www.postgresql.org/docs/current/static/monitoring-stats.html
PostgreSQL Mailing Lists (general, performance, hackers)
https://www.postgresql.org/list/
PostgreSQL-Consulting company blog
http://blog.postgresql-consulting.com
Эти слайды:
https://www.slideshare.net/alexeylesovsky/presentations