Программа курса Tantor DBA1-17 "Администрирование PostgreSQL 18"
базовые навыки работы в операционных системах семейства Linux и базовые знания SQL
знание архитектуры PostgreSQL, установка и создание кластера баз данных, начальная настройка параметров конфигурации, организация хранения данных на логическом и физическом уровнях, повседневные задачи администрирования и регламентные работы, создание резервных копий, физическая и логическая репликация
учебник
практические задания
демонстрации
виртуальная машина
Курс предназначен для администраторов PostgreSQL и всех, кто хочет познакомиться с архитектурой и задачами администрирования СУБД PostgreSQL 18 и более ранних версий, а также возможностями Tantor Postgres SE, SE 1C, BE, Free.
Введение |
О курсе |
Установка |
Проверка возможности установки |
Инсталлятор |
Локальная установка |
Процесс установки |
После установки |
Конфигураторы |
Создание кластера утилитой initdb |
Управление |
Утилита управления экземпляром pg_ctl |
Процесс postgres |
Управление экземпляром через systemctl |
Работа в контейнере docker |
Остановка экземпляра |
Утилиты управления |
Утилита psql |
psql: подключение к базе данных |
psql: параметры подключения |
Получение справки по командам psql |
Форматирование вывода psql |
Вывод результата в формате HTML |
Вывод результата в расширенном формате |
Приглашение к вводу команд (промпт) psql |
Автофиксация транзакций и выполнение команд psql |
Переменные psql |
Выполнение командных файлов в psql |
Графические приложения: DBeaver |
Графические приложения: pgAdmin |
Графические приложения: Платформа Tantor |
Демонстрация |
Практика |
Архитектура PostgreSQL |
Экземпляр PostgreSQL |
Запуск экземпляра |
Запуск серверного процесса |
Общая память процессов экземпляра |
Кэш таблиц системного каталога |
Представление pg_stat_slru |
Локальная память процесса |
Представление pg_backend_memory_contexts |
Функция pg_log_backend_memory_contexts(PID) |
Структуры памяти, обслуживающие буферный кэш |
Поиск свободного буфера |
Алгоритм вытеснения грязных буферов |
Стратегии замены буферов |
Поиск блока в буферном кэше |
Закрепление буфера (pin) и блокировка content_lock |
Освобождение буферов при удалении файлов |
Процесс фоновой записи bgwriter |
Очистка кэша буферов процессом bgwriter |
Контрольная точка |
Шаги выполнения контрольной точки |
Взаимодействие процессов экземпляра с диском |
Практика |
Многоверсионность |
Таблицы |
Служебные столбцы |
Структура блока данных |
Заголовок версии строки |
Вставка строки |
Обновление строки |
Удаление строки |
Типы данных наименьшего размера |
Типы данных переменной длины |
Целочисленные типы данных |
Хранение дат, времени, их интервалов |
Типы данных для вещественных чисел |
Моментальный снимок |
Транзакция |
Свойства транзакций |
Уровни изоляции транзакций |
Феномены изоляции транзакций |
Пример ошибки сериализации |
Статусы транзакций |
Фиксация транзакции |
Подтранзакции |
Типы блокировок |
Блокировки объектов |
Совместимость блокировок |
Блокировки объектов |
Блокировки строк |
Мультитранзакции |
Очередь при блокировке строки |
Практика |
Регламентные работы |
Автовакуум |
Представление pg_stat_progress_vacuum |
Параметры команды VACUUM |
Параметр default_statistics_target |
Раздувание (bloat) таблиц и индексов |
Оптимизация Heap Only Tuple |
Мониторинг HOT update |
Влияние FILLFACTOR на HOT cleanup |
Внутристраничная очистка в таблицах |
Внутристраничная очистка в индексах |
Эволюция индексов: создание, удаление, перестройка |
Частичные индексы |
Команда REINDEX |
REINDEX CONCURRENTLY |
Расширение HypoPG |
Счетчик транзакций |
Практика |
Выполнение запросов |
Синтаксический разбор |
Семантический разбор |
Трансформация (переписывание) запроса |
Планирование выполнения (оптимизация) |
Выполнение запроса |
Команда EXPLAIN |
Параметры команды EXPLAIN |
Таблицы |
Индексы для ограничений целостности |
Способы доступа к данным в плане запроса |
Методы доступа к строкам |
Способы соединения наборов строк |
Кардинальность и селективность |
Стоимость плана запроса |
Статистики |
Таблица pg_statistic |
Накопительная статистика |
Расширение pg_stat_statements |
Практика |
Расширения PostgreSQL |
Расширяемость PostgreSQL |
Директории файлов расширений и библиотек |
Установка расширений |
Файлы расширений |
Foreign Data Wrapper |
Расширение file_fdw |
Расширение dblink |
Практика |
Конфигурирование PostgreSQL |
Обзор |
Параметры конфигурации |
Просмотр параметров |
Основной файл параметров postgresql.conf |
Файл параметров postgresql.auto.conf |
Применение изменений параметров |
Привилегии на изменение параметров |
Классификация параметров: Контекст |
Параметры контекста internal |
Классификация параметров: Уровни |
Параметры хранения на уровне таблицы |
Классификация параметров: Категории |
Категория: "Для разработчиков" |
Категория: "Пользовательские настройки" |
Названия и значения параметров конфигурации |
Параметр конфигурации transaction_timeout |
Автономные транзакции |
Представление pg_stat_slru |
Параметр конфигурации transaction_buffers |
Параметры multixact_members_buffers и multixact_offsets_buffers |
Параметр конфигурации subtransaction_buffers |
Параметр конфигурации notify_buffers |
Задание параметров при создании кластера |
Разрешения на директорию PGDATA |
Размер блока данных PostgreSQL |
Ограничения PostgreSQL |
Параметр enable_large_allocations |
Ограничения на длину идентификаторов |
Конфигурационные параметры |
Демонстрация |
Практика |
Логическая структура кластера |
Кластер баз данных |
Экземпляр |
База данных |
Список баз данных |
Создание базы данных |
Изменение свойств базы данных |
Команда ALTER DATABASE |
Удаление базы данных |
Схемы в базе данных |
Создание и изменение схем |
Путь поиска объектов в схемах |
Специальные схемы |
Определение текущего пути поиска |
В какой схеме будет создан объект |
Путь поиска в подпрограммах SECURITY DEFINER |
Маскировка объектов схем |
Системный каталог |
Общие объекты кластера |
Использование системного каталога |
Обращение к системному каталогу |
reg-типы |
Часто используемые команды psql |
Инспектор баз данных в Платформе Tantor |
Демонстрация |
Практика |
Физическая структура кластера |
Директория файлов кластера PGDATA |
Директория файлов кластера PGDATA |
Временные объекты |
Табличные пространства |
Табличные пространства: характеристики |
Табличные пространства: характеристики |
Команды управления табличными пространствами |
Изменение директории табличного пространства |
Параметры табличных пространств |
Работа с файлами журнала |
Основной слой хранения данных |
Дополнительные слои |
Расположение файлов объектов |
Размеры табличных пространств и баз данных |
Функции определения размера |
Перемещение объектов |
Смена схемы и владельца |
Реорганизация и перемещение таблиц утилитой pg_repack |
Уменьшение размера файлов таблиц утилитой pgcompacttable |
TOAST (The Oversized-Attribute Storage Technique) |
TOAST (The Oversized-Attribute Storage Technique) |
Поля переменной длины |
Вытеснение полей в TOAST |
Алгоритм вытеснения полей в TOAST |
TOAST chunk |
Ограничения TOAST |
Параметры toast_tuple_target и default_toast_compression |
Колоночное хранение Hydra pg_columnar |
Демонстрация |
Практика |
Диагностический журнал |
Уровни важности сообщений |
Расположение журнала |
Передача сообщений syslog |
Ротация файлов диагностического журнала |
Диагностический журнал |
Параметры диагностики |
Отслеживание использования временных файлов |
Отслеживание работы автовакуума и автоанализа |
Наблюдение за контрольными точками |
Описание записей log_checkpoints |
Утилита pg_waldump и записи log_checkpoints |
Логирование соединений |
Параметр log_connections |
Параметр log_disconnections |
Расширения pgaudit и pgaudittofile |
Конфигурирование расширений pgaudit и pgaudittofile |
Диагностика частоты соединений с базой данных |
Диагностика блокирующих ситуаций |
Практика |
Безопасность |
Пользователи (роли) в кластере баз данных |
Атрибуты (параметры, свойства) ролей |
Атрибут INHERIT и GRANT WITH INHERIT |
Переключение сессии в другую роль и смена ролей |
Предопределённые (служебные) роли |
Права на объекты |
Просмотр прав на объекты в psql |
Привилегии по умолчанию (DEFAULT PRIVILEGES) |
Защита на уровне строк (Row-level security, RLS) |
Подсоединение к экземпляру |
Файл pg_hba.conf |
Содержимое pg_hba.conf |
Содержимое pg_hba.conf (продолжение) |
Файл сопоставления имён pg_ident.conf |
Практика |
Физическое резервирование |
Виды резервных копий |
Инкрементальные бэкапы |
Что резервируется |
Процедура восстановления |
Файлы журнала предзаписи |
LSN (Log Sequence Number) |
Названия журнальных файлов и LSN |
Процесс восстановления startup |
Функции для работы с журналами |
Холодное резервирование |
Параметр конфигурации full_page_writes |
Утилита резервирования pg_basebackup |
Утилита pg_verifybackup |
Архив журналов |
Отсутствие потерь (Durability) |
Утилита pg_receivewal |
Слот репликации |
Создание базовой резервной копии |
Утилита резервирования wal-g |
Демонстрация |
Практика |
Логическое резервирование |
Логическое резервирование |
Примеры использования |
Сравнение логического и физического резервирования |
Команда COPY .. TO |
Команда COPY .. FROM |
Команда \copy |
Утилита pg_dump |
Параллельная выгрузка |
Утилита pg_restore |
Возможности pg_restore |
Утилита pg_dumpall |
Возможности pg_dumpall |
Строки большого размера |
Параметр enable_large_allocations |
Демонстрация |
Практика |
Физическая репликация |
Физическая репликация |
Мастер и реплика |
Реплики и архив журнала |
Настройка мастера |
Создание реплики |
Слоты репликации |
Параметры конфигурации на репликах |
Горячая реплика |
Обратная связь с мастером |
Мониторинг горизонта |
Параметры max_slot_wal_keep_size и transaction_timeout |
Параметры мастера, которые должны быть синхронизированы с репликами |
Смена ролей мастер-реплика |
Повышение реплики до мастера |
Файлы истории линий времени |
Утилита pg_rewind |
Процессы экземпляра реплики |
Отложенная репликация |
Восстановление повреждённых блоков данных с реплики |
Демонстрация |
Практика |
Логическая репликация |
Логическая репликация |
Применение логической репликации |
Физическая и логическая репликация |
Идентификация строк |
Способы идентификации строк |
Действия для создания логической репликации |
Создание публикации |
Создание подписки |
Создание подписки |
Нагрузка на экземпляр |
Получение журнальных данных с реплики |
Конфликты |
Двунаправленная репликация |
Демонстрация |
Практика |
Обзор Платформы Tantor |
Сценарии использования |
Инструменты мониторинга |
Платформа Tantor |
Настройки пользователей |
Рабочие пространства |
Обзор экземпляра |
Кластера Patroni |
Профилировщик запросов |
Репликация |
Табличные пространства |
Оповещения |
Конфигурация мониторинга |
Аналитика |
Активности фоновых процессов |
Настройки |
Анализ схемы данных |
Регламентное обслуживание |
Планировщик задач |
Курс по Платформе Tantor |
Возможности Tantor Postgres |
Tantor Postgres - ветвь PostgreSQL |
Доработки в Tantor Postgres |
Дополнительные параметры конфигурации |
Расширения Tantor Postgres SE и SE 1C |
Параметры оптимизатора запросов |
Библиотека pg_stat_advisor |
Параметры enable_temp_memory_catalog и enable_delayed_temp_file |
Параметр enable_large_allocations |
Алгоритм сжатия pglz |
Параметр libpq_compression |
Параметр wal_sender_stop_when_crc_failed |
Параметр backtrace_on_internal_error |
Расширение uuid_v7 |
Расширение pg_tde (Transparent Data Encryption) |
Валидатор oauth_base_validator |
Библиотека credcheck |
Расширения fasttrun и online_analyze |
Расширение mchar |
Расширение fulleq |
Расширение orafce |
Расширение http |
Расширение pg_store_plans |
Расширение pg_variables |
Производительность при использовании pg_variables |
Преимущества расширения pg_variables |
Расширение pg_stat_kcache |
Статистики, собираемые pg_stat_kcache |
Расширение pg_wait_sampling |
История событий ожидания |
Расширение pg_background |
Расширения pgaudit и pgaudittofile |
Конфигурирование расширений pgaudit и pgaudittofile |
Утилита pgcopydb |
Утилита pg_anon |
Утилита pg_configurator |
Утилита pg_diag_setup.py |
Утилита pg_sec_check |
Утилита WAL-G (Write-Ahead Log Guard) |
Другие расширения |
Практика |
Курс является обновленной версией курса DBA1-17 "Tantor: Администрирование PostgreSQL 17". Курс полезен для тех, кто планирует использовать не только Tantor Postgres, но и ванильный PostgreSQL. Обзор библиотек и расширений Tantor Postgres перенесён в заключительную главу курса.