Перейти к основному содержимому

Задание 3: Периодичность проверки целостности

По итогам выполнения данной лабораторной работы вы научитесь управлять параметрами конфигурации проверки целостности, настраивать периодичность и временные ограничения автоматических проверок, а также анализировать работу процесса IntCheckWorker при различных сценариях.

Параметры настройки проверки целостности​

  1. Подключитесь к экземпляру СУБД суперпользователем:

    [postgres@srv1 ~]$ psql
  2. Просмотрите параметры конфигурации, связанные с целостностью:

    postgres=# \dconfig integrity*
    Parameter | Value
    -----------------------------+-------
    integrity_check_delay | 1d
    integrity_check_select_wait | 10s
    integrity_check_wait | 5s
    (3 rows)
  3. Получите подробную информацию о параметре integrity_check_delay:

    postgres=# SELECT * FROM pg_settings WHERE name = 'integrity_check_delay' \gx
    -[ RECORD 1 ]---+---------------------------
    name | integrity_check_delay
    setting | 86400
    unit | s
    category | Ungrouped
    short_desc | Sleep time between rounds.
    extra_desc |
    context | sighup
    vartype | integer
    source | default
    min_val | 5
    max_val | 86400
    ...
    Внимание!

    Минимальное значение параметра составляет 5 секунд, максимальное — 86400 секунд (1 сутки). По умолчанию проверка выполняется раз в сутки.

  4. Изучите параметры, связанные с временными ожиданиями:

    postgres=# \dconfig+ integrity_*wait
    List of configuration parameters
    Parameter | Value | Type | Context | Access privileges
    -----------------------------+-------+---------+---------+-------------------
    integrity_check_select_wait | 10s | integer | sighup |
    integrity_check_wait | 5s | integer | sighup |
    (2 rows)

Изучение процесса IntCheckWorker​

  1. Проверьте, что процесс integrity check launcher (IntCheckWorker) запущен:

    [student@srv1 ~]$ ps f -C postgres

    Ожидаемый результат: в списке процессов присутствует строка:

    ... \_ postgres: integrity check launcher
  2. Изучите назначение процесса IntCheckWorker из документации или справки:

    • этот процесс автоматически запускается при старте СУБД;
    • он создает JSON-файлы для контролируемых объектов, если они отсутствуют;
    • для проверки целостности объектов запускает рабочие процессы, а не выполняет проверку самостоятельно;
    • при успешном завершении проверок сообщает об этом;
    • если сообщение о завершении проверки не поступает, происходит блокировка СУБД и принудительное завершение процесса через сигнал SIGTERM;
    • если процесс не завершается после SIGTERM, применяется SIGKILL с последующей перезагрузкой всех процессов СУБД.

Настройка периодичности проверки​

  1. Установите периодичность проверки целостности равной двум минутам:

    postgres=# ALTER SYSTEM SET integrity_check_delay = '2min';
    postgres=# SELECT pg_reload_conf();
  2. Проверьте применение новой настройки:

    postgres=# SHOW integrity_check_delay;
    integrity_check_delay
    -----------------------
    2min
    (1 row)

    Так как конфигурация кластерная, дополнительно сделайте restart:

    [postgres@srv1 ~]$ restart
  3. Проследите за работой процесса проверки через журнал сообщений. В терминале с запущенным tail -f вы должны периодически видеть записи о начале и завершении проверок:

    [postgres@srv1 ~]$ tail -f $(cut -d' ' -f2 /pgdata/06/data/current_logfiles) -n 20
    LOG: Start of integrity check
    LOG: Start of integrity check
  4. Восстановите значение по умолчанию:

    postgres=# ALTER SYSTEM RESET integrity_check_delay;
    postgres=# SELECT pg_reload_conf();
    [postgres@srv1 ~]$ restart

Настройка временных ограничений​

  1. Изучите назначение параметров ожидания:

    • integrity_check_wait — ограничивает время, затрачиваемое на проверку целостности. При превышении этого значения происходит блокировка сеансов пользователей. Предусмотрен для случаев постановки на контроль большого количества объектов одномоментно;
    • integrity_check_select_wait — задает период запуска автоматической проверки контроля целостности объектов.
  2. Измените параметр integrity_check_wait на 30 секунд:

    postgres=# ALTER SYSTEM SET integrity_check_wait = 30;
  3. Измените параметр integrity_check_select_wait на 20 секунд:

    postgres=# ALTER SYSTEM SET integrity_check_select_wait = 20;
    postgres=# SELECT pg_reload_conf();
    [postgres@srv1 ~]$ restart
  4. Проверьте оба параметра:

    postgres=# SELECT name, setting, unit FROM pg_settings
    WHERE name LIKE 'integrity_check%wait';
    name | setting | unit
    ---------------------------+---------+------
    integrity_check_select_wait | 20 | s
    integrity_check_wait | 30 | s
    (2 rows)

Подведем итоги​

Вопрос 1

Вопрос 1: Выберите верные утверждения:

Вопрос 2

Вопрос 2: Какой параметр задает максимальное время на проверку целостности объекта?