Программа курса DBA1-17 "Tantor: Администрирование PostgreSQL 17"
Продолжительность: 5 дней
Предварительная подготовка:
базовые навыки работы в операционных системах семейства Linux и базовые знания SQL
Какие навыки будут получены:
знание архитектуры PostgreSQL, установка и создание кластера баз данных, начальная настройка параметров конфигурации, организация хранения данных на логическом и физическом уровнях, повседневные задачи администрирования и регламентные работы, создание резервных копий, физическая и логическая репликация
Учебные материалы
учебник
практические задания
виртуальная машина
Описание курса
Курс предназначен для администраторов PostgreSQL и всех, кто хочет познакомиться с архитектурой и задачами администрирования СУБД PostgreSQL 17 версии.
Содержание курса
Введение	
О курсе	
Установка	
Проверка возможности установки	
Инсталлятор	
Локальная установка	
Процесс установки	
После установки	
Конфигураторы	
Создание кластера утилитой 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 версии 17.5	
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)	
Другие расширения	
Практика	

Отличия от предыдущей версии курса
Курс создан на основе курса 00-000348 "Администрирование СУБД Tantor в редакции SE, версия 16", который был выпущен в июле 2024 года. Название курса было изменено на "Tantor: Администрирование PostgreSQL 17".
Основные изменения коснулись глав по архитектуре, диагностике, безопасности. В виртуальной машине к курсу была обновлена операционная система с Astralinux версии 1.7 на Astralinux версии 1.8 и Tantor Postgres SE с версии 16.1 на версию 17.5.
В первом практическом задании описано как установить программное обеспечение Tantor Postgres из открытого репозитория для выполнения последующих практических заданий.
 Курс полезен для тех, кто планирует использовать не только Tantor Postgres, но и "ванильный" PostgreSQL. Обзор библиотек и расширений Tantor Postgres перенесён в заключительную главу курса.