Дата и место проведения мероприятия. Регламентное обслуживание баз данных PostgreSQL в сервисе 1cFresh

Содержание

Слайд 2

Используемые ОС и СУБД Клиент-серверный вариант работы технологической платформы 1С:Предприятие Рабочие


Используемые ОС и СУБД

Клиент-серверный вариант работы технологической платформы 1С:Предприятие
Рабочие серверы 1С:Предприятия:

Windows, Linux
СУБД: IBM DB2, Microsoft SQL Server, Oracle Database, PostgreSQL
Сервис 1cFresh
ОС Windows Server + СУБД Microsoft SQL Server
ОС Linux + СУБД PostgreSQL
Слайд 3

Управление конкурентным доступом в PostgreSQL Модель многоверсионного управления конкурентным доступом (MVCC)


Управление конкурентным доступом в PostgreSQL

Модель многоверсионного управления конкурентным доступом (MVCC)
Транзакции, читающие данные,

не блокируются транзакциями, записывающими данные. И наоборот
Уменьшение ожиданий при многопользовательской работе (по сравнению с СУБД, реализующими методику блокирования)
Раздувание таблиц и индексов (bloat)
Возможное снижение производительности из-за чрезмерного увеличения размеров таблиц и индексов
Избыточное использование дискового пространства

активные версии

начало записи

завершение записи

начало чтения

завершение чтения

неактивные версии

Слайд 4

Регулярные задачи обслуживания PostgreSQL Непрерывное резервное копирование данных Восстановление системы после


Регулярные задачи обслуживания PostgreSQL

Непрерывное резервное копирование данных
Восстановление системы после критических сбоев на

заданный момент времени в прошлом
pg_basebackup + pg_receivewal
Управление файлами журнала сервера
Диагностика проблем и инцидентов
Использование встроенного средства сбора сообщений (logging collector)
Очистка баз данных и обновление статистики
Поддержание базы данных в оптимальном состоянии
Обеспечение высокой и стабильной производительности
Слайд 5

Очистка встроенными средствами AUTOVACUUM Переиспользование дискового пространства Может быть недостаточно эффективным


Очистка встроенными средствами

AUTOVACUUM
Переиспользование дискового пространства
Может быть недостаточно эффективным при интенсивном изменении или

удалении строк в таблицах
Обновление статистики таблиц
VACUUM FULL
Высвобождает неиспользуемое место на диске
Требуют блокировки таблицы в режиме ACCESS EXCLUSIVE
Продолжительная недоступность информационной базы
Ручной запуск VACUUM, ANALYZE
CLUSTER
Восстанавливает упорядочивание таблицы согласно индексу
Также как VACUUM FULL требует исключительной блокировки таблицы
Слайд 6

Очистка при помощи pg_repack Расширение pg_repack (https://reorg.github.io/pg_repack) Устраняет пустоты в таблицах


Очистка при помощи pg_repack

Расширение pg_repack (https://reorg.github.io/pg_repack)
Устраняет пустоты в таблицах и индексах
Высвобождает

дисковое пространство
Не требует длительной исключительной блокировки очищаемой таблицы
Может выполняться в процессе работы пользователей с информационной базой
Опционально может выполнять обновление статистики таблицы после ее реорганизации
Ограничения использования pg_repack
Требует наличия в сжимаемой таблице
первичного ключа (PRIMARY KEY)
или уникального индекса по столбцу NOT NULL
Слайд 7

Как работает pg_repack очищаемая таблица 1. логирующая таблица 3. новая таблица

Как работает pg_repack

очищаемая таблица

1. логирующая таблица

3. новая таблица

2. репликация изменений

4. перенос данных из исходной таблицы в новую

таблицу

изменения после начала pg_repack

5. перенос данных из логирующей таблицы в новую таблицу

6. замена очищаемой таблицы

исключительная блокировка

Слайд 8

Возможные трудности при использовании pg_repack Повышение нагрузки на сервере БД Интенсивная


Возможные трудности при использовании pg_repack

Повышение нагрузки на сервере БД
Интенсивная запись в

журнал предзаписи (WAL)
Плохо прогнозируемая длительность выполнения
Необходимо дополнительное свободное место на диске для хранения промежуточных копий реорганизуемых таблиц
Отсутствие инструментов анализа для принятия решений о необходимости выполнения очистки
Слайд 9

Служба pgservice для автоматизации очистки баз данных Анализ статистики изменения таблиц


Служба pgservice для автоматизации очистки баз данных

Анализ статистики изменения таблиц баз данных
Управление

временем выполнения pg_repack
Контроль свободного места на диске
Контроль состояния журнала предзаписи (WAL)
Отправка результатов очистки в системы мониторинга
Слайд 10

Анализ статистики изменения таблиц pgservice хранит статистическую информацию об изменениях таблиц


Анализ статистики изменения таблиц

pgservice хранит статистическую информацию об изменениях таблиц при

предыдущем запуске очистки
В качестве исходной информации используется статистика PostgreSQL
pg_stat_all_tables (n_tup_ins, n_tup_upd, n_tup_del)
Запуск pg_repack выполняется только по определенным таблицам
где количество измененных строк с момента предыдущей очистки превышает заданный процент (>20%) относительно общего числа строк
Снижается нагрузка на сервер БД и дисковую подсистему
Уменьшается общая длительность выполнения процедуры очистки
Слайд 11

Контроль места на диске В настройках pgservice устанавливается минимальный процент свободного


Контроль места на диске

В настройках pgservice устанавливается минимальный процент свободного места на

диске (6%)
Перед запуском pg_repack выполняется анализ использования дискового пространства таблицами, подлежащими очистке (pg_total_relation_size)
При очистке таблицы необходимо дополнительное свободное место на диске, равное размеру самой таблицы и ее индексов
Пропускаются таблицы, при очистке которых свободного места на диске останется меньше заданного процента
pg_repack запускается от меньших по размеру таблиц к большим
Защита от аварийной остановки сервера БД из-за нехватки свободного места
Слайд 12

Управление временем выполнения pg_repack Ограничения по времени После завершения активной работы


Управление временем выполнения pg_repack

Ограничения по времени
После завершения активной работы пользователей
Снижение негативного

влияния на работу в приложениях
До начала технических работ на информационных базах
Исключение возможности возникновения блокировок на СУБД, затрудняющих выполнение обновлений
Чередование запуска pg_repack на базах данных по дням
Уменьшение нагрузки на сеть при передаче файлов журналов предзаписи на сервера резервного копирования

время

активность на СУБД

Работа пользователей

Обновления

Бэкапы

pg_repack

18:00

23:30

pgservice

Слайд 13

Контроль состояния журнала предзаписи pgservice периодически (каждые 10с) отслеживает отставания (в


Контроль состояния журнала предзаписи

pgservice периодически (каждые 10с) отслеживает отставания (в байтах) передачи

WAL-файлов на резервные сервера
Отставание рассчитывается по разнице между значениями
текущей позиции в журнале предзаписи pg_current_wal_lsn()
позиции в журнале предзаписи, записанной на резервном сервере pg_stat_get_wal_senders().write_lsn
В случае превышения определенного размера очистка текущей таблицы прерывается
pgservice ожидает уменьшения отставания передачи WAL-файлов, после чего возобновляет работу по очистке таблиц
Защита от удаления сервером БД более не нужных ему WAL-файлов, которые еще не были переданы на резервный сервер
Поддержка целостности журнала предзаписи для обеспечения непрерывного резервного копирования
Слайд 14

Отправка результатов в системы мониторинга pgservice отправляет результаты выполнения очистки в


Отправка результатов в системы мониторинга

pgservice отправляет результаты выполнения очистки в систему

мониторинга
Отслеживаются пропуски запуска очистки баз данных
Отслеживаются пропущенные при очистке таблицы
Нехватка места для выполнения очистки
Нехватка времени для выполнения очистки по всем таблицам
Слайд 15

Результаты внедрения pgservice Поддержание баз данных в оптимальном состоянии за счет


Результаты внедрения pgservice

Поддержание баз данных в оптимальном состоянии за счет их

регулярной очистки
Повышение скорости работы баз данных
PostgreSQL выбирает оптимальные планы выполнения запросов
Чтение очищенных таблиц и индексов происходит гораздо быстрее
Отсутствие недоступности при обслуживании баз
Оптимизация использования ресурсов сервера БД
Выполнение полезной работы по очистке только нужных таблиц баз данных
Предсказуемое поведение работы pg_repack
Строгий контроль за временем выполнения
Мониторинг критически важных параметров работы сервера СУБД при очистке и оперативное управляющее воздействие в случае их отклонения от безопасных значений
Снижение временных затрат службы эксплуатации сервиса на запуск и мониторинг процедуры очистки