Удобство сопровождения
Контекст
Администрирование высоконагруженных систем требует не только высокой надежности, но и наличия инструментов, позволяющих эффективно сопровождать и развивать систему без простоев, рисков потери данных или автоматизированного управления ресурсами.
Проблема
В оригинальном PostgreSQL отсутствуют критичные для эксплуатации механизмы: удобная миграция, контроль потребления ресурсов, возможность резервирования подключений для пользователей, не обладающих правами суперпользователя, инструменты ротации паролей учетных данных. Отсутствие этих механизмов затрудняет сопровождение, увеличивает нагрузку на администраторов, снижает устойчивость системы и увеличивает риски при обновлениях, масштабировании и поддержке.
Решение
В СУБД Pangolin реализован ряд функциональностей, направленных на повышение удобства сопровождения и расширение возможностей администратора СУБД:
- Инструмент миграции с оригинального PostgreSQL;
- Тюнинг параметров;
- Возможность ротации паролей для учетных записей без недоступности;
- Очистка неиспользуемых файлов в табличных пространствах (расширение pg_orphaned);
- Аварийное завершение СУБД при отключении СХД;
- Трассировка сессий;
- Контроль потребления ресурсов (CPU, RAM) с завершением ресурсоемких сессий;
- Квотирование вычислительных ресурсов;
- Контроль целостности передачи WAL на реплику.
Эти возможности автоматизируют сопровождение, повышают устойчивость СУБД к сбоям и упрощают управление жизненным циклом базы данных.
В подразделах ниже представлено более детальное описание данных функциональностей.
Инструмент миграции с оригинального PostgreSQL
В качестве инструмента для миграции с оригинального PostgreSQL на Pangolin используется доработанная оригинальная утилита pg_upgrade.
Более подробно можно ознакомиться в разделе «Миграция с оригинального PostgreSQL на Pangolin» документа «Руководство разработчика».
Тюнинг параметров
Утилита Pangolin Tuner предоставляет гибкое и эффективное управление конфигурацией СУБД, оптимизируя ее производительность путем тонкой настройки параметров.
Pangolin Tuner – это инструмент для работы с конфигурацией СУБД Pangolin, предназначенный для оптимизации производительности баз данных в различных сценариях использования. Инструмент автоматически определяет оптимальные настройки в зависимости от профиля рабочей нагрузки. Это позволяет значительно сократить время настройки и минимизировать риски, связанные с неправильной конфигурацией.
Утилита поставляется в виде отдельного rpm/deb-пакета в основной части дистрибутива продукта СУБД Pangolin.
Утилита не требует наличия установленной СУБД на целевом сервере и поддерживает опциональные параметры для расчета, что делает ее универсальным инструментом для различных сценариев установки СУБД Pangolin.
О настройке и использовании утилиты смотрите в разделе «Утилита Pangolin Tuner. Тюнинг параметров» документа «Руководство администратора».
Возможность ротации паролей для учетных записей без недоступности
При смене пароля пользователь, на определенное настройками время (grace-период), может подключаться к Pangolin по старому паролю. Этот механизм позволит реализовать автоматическую ротацию паролей ТУЗ, которые используют приложения, без недоступности этих приложений. После ротации паролей ТУЗ приложения продолжают работу с СУБД Pangolin, используя старый пароль, который необходимо обновить в течении grace-периода.
Более подробное описание данной функциональностью представлено в подразделе «Обновление пароля» раздела «Парольные политики» документа «Руководство администратора».
Очистка неиспользуемых файлов в табличных пространствах
В процессе работы СУБД Pangolin создаются и удаляются различные файлы табличных страниц в табличных пространствах. Ядро оригинального PostgreSQL устроено таким образом, что возможны случаи, когда в результате аварийного завершения процесса состояние БД откатывается до последней контрольной точки, в которой нет информации о созданных файлах табличных страниц. Со временем таких файлов может накопиться огромное количество, и они будут занимать ощутимый объем дискового пространства.
Для очистки табличных пространств от подобных неиспользуемых файлов предназначено модифицированное расширение pg_orphaned.
Расширение pg_orphaned работает с неиспользуемыми и временными файлами по следующему алгоритму:
- Поиск файлов по числовым маскам (идентификаторам
relfilenode) в каталоге табличного пространства. - Поиск этих файлов по соответствующим идентификаторам в представлении
pg_class, аналогичноpg_filenode_relation(). - Если идентификатор на предыдущем шаге не был найден, файл считается неиспользуемым и временно помещается в другой каталог.
- При отсутствии обращений к отобранным «на карантин» файлам их можно удалить.
Расширение pg_orphaned предоставляет функции для работы с файлами, включая поиск и удаление неиспользуемых временных файлов. Поиск выполняется только в пределах той базы данных, в которую установлено расширение, за исключением файлов глобального каталога, не привязанного к конкретной БД.
pg_orphaned может быть установлено в нескольких базах данных. Все его функции поддерживают режим dry-run, позволяющий просмотреть, какие файлы и куда будут перемещены, без фактического выполнения операций.
Более подробно о расширении можно ознакомиться в разделе «Расширение pg_orphaned. Очистка неиспользуемых файлов в табличных пространствах» документа «Описание расширений продукта СУБД Pangolin».
Аварийное завершение СУБД при отключении СХД
СУБД Pangolin умеет определять момент отключения системы хранения данных (СХД) для аварийного завершения и осуществления переключения лидера кластера (failover).
Тогда как в оригинальном PostgreSQL при отказе/отключении СХД, пользовательские сессии продолжают ожидать операций ввода-вывода. Тайм-аут до возникновения первой ошибки может составлять до 1080 секунд. Автоматическое переключение лидера кластера (failover) не происходит.
Более подробное описание и настройка данной функциональности представлено в разделе «Обеспечение аварийного завершения СУБД Pangolin при отключении СХД» документа «Руководство администратора».
Трассировка сессий
СУБД Pangolin предоставляет механизм трассировки (включения/выключения отладочной печати) с различными уровнями детализации. Суперпользователь может использовать этот механизм для любой сессии, в рамках которой действие не запрещено правилами защиты от действий привилегированного пользователя.
Трассировка записывается на сервере СУБД в файл, путь к которому указывается в значении параметра сервера, а имя формируется по умолчанию из PID серверного процесса и уникального идентификатора или задается перед включением трассировки параметром на уровне сессии.
Функциональность позволяет быстро определять места возникновения и полные контексты трудно воспроизводимых ошибок в процессе отладки объемных блоков кода.
Более подробное описание и настройка данной функциональности представлено в одноименном разделе документа «Руководство администратора».
Контроль потребления ресурсов
Функциональность реализована в виде расширения psql_resources_consumption_limits, которое позволяет ограничивать потребление ресурсов: оперативной памяти и CPU, с помощью процессов СУБД.
Данная функциональность позволяет обеспечить:
- защиту от деградации функционирования СУБД при превышении ожидаемого потребления ресурсов СУБД каким-либо из процессов сессий СУБД, в случае попытки выполнения не оптимально составленного запроса;
- диагностику случаев выполнения не оптимально составленных запросов.
В СУБД Pangolin поддерживается:
- функциональность фиксированного задания ограничений ресурсов для процессов сессий СУБД;
- завершение с ошибкой сессии, превысившей ограничение на потребление ресурса, и всех ее подпроцессов;
- обнаружение превышения квоты на ресурсы асинхронно.
Более подробное описание и настройка данной функциональности представлено в подразделе «Контроль потребления СУБД Pangolin вычислительных ресурсов» раздела «Диагностика и планирование» документа «Руководство администратора».
Квотирование вычислительных ресурсов
В СУБД Pangolin добавлен инструмент управления квотами на разделяемые ресурсы – расширение psql_quotolin, которое предназначено для продвинутого управления ресурсами. Оно позволяет администраторам:
- задавать лимиты по CPU и оперативной памяти;
- ограничивать скорость чтения и записи на диск в разрезе табличных пространств;
- устанавливать дисковые квоты для ролей, схем и БД;
- задавать индивидуальные ограничения для конкретного сеанса;
- планировать применение лимитов по датам, времени суток и дням недели;
- наследовать планы ресурсов от родительских ролей.
Ключевой механизм работы psql_quotolin — планы ресурсов, которые назначаются ролям и автоматически применяются фоновым процессом Quotolin Launcher в реальном времени для новых и уже активных сеансов.
Более подробное описание и настройка расширения представлены в разделе «psql_quotolin. Расширенное квотирование вычислительных ресурсов» документа «Описание расширений продукта СУБД Pangolin».
Контроль целостности передачи WAL на реплику
Для защиты от повреждения данных в случае неполадок оборудования СУБД Pangolin использует журнал предзаписи (WAL). Данные журнала используются не только для восстановления после сбоя, но и для работы репликации.
Для сохранения резервной копии создается вспомогательный процесс WALRecoveryWriter, который получает блоки для записи копии WAL-сегмента и асинхронно записывает их в файл, аналогичный оригинальному WAL-сегменту с суффиксом backup в названии. Процесс WalSender перед отправкой проверяет данные, находящиеся в отправляемом сообщении. Если запись или заголовок блока повреждены, то происходит чтение поврежденной части из резервной копии журнала WAL-сегмента. Поврежденная часть заменяется резервной и происходит повторная проверка. Если не удалось восстановить поврежденные данные, то WalSender генерирует ошибку. В случае повреждения WAL-данных ошибка будет происходить уже на мастере. При успехе попытки восстановления данные отправляются реплике.
Более подробное описание и настройка данной функциональности представлено в одноименном подразделе раздела «Контроль целостности» документа «Руководство администратора».