Использование скрипта healthcheck.sh
Скрипт healthcheck.sh является частью официальных образов Docker для MariaDB Server. Скрипт входит в состав репозитория официального образа Docker для MariaDB Server.
Скрипт обрабатывает ряд аргументов и тестов в строго определённом порядке. Аргументы, относящиеся к тесту, должны предшествовать имени теста. Если тест завершается неудачно, дальнейшая обработка не выполняется. Как аргументы, так и тесты начинаются с двойного дефиса.
По умолчанию (с 2023-06-27) официальные образы создадут пользователей healthcheck@localhost, healthcheck@127.0.0.1, healthcheck@::1 с случайным паролем и привилегиями USAGE. MARIADB_HEALTHCHECK_GRANTS может использоваться для --replication в случаях, когда требуются дополнительные разрешения. Это хранится в файле .my-healthcheck.cnf в каталоге данных контейнера и передаётся в качестве --defaults-extra-file скрипту healthcheck.sh, если он существует. .my-healthcheck.cnf также устанавливает protocol=tcp для mariadb, поэтому --connect фактически присутствует во всех тестах.
Переменные среды MARIADB_MYSQL_LOCALHOST_USER=1, MARIADB_MYSQL_LOCALHOST_GRANTS также могут быть использованы, но с созданием пользователя healthcheck они обеспечивают обратную совместимость.
Тесты
--connect
Активен, когда внешний пользователь может подключиться к TCP-порту MariaDB Server. Это строго проверяет только подключение по TCP, а не работоспособность аутентификации.
--innodb_initialized
Этот тест истиннен, когда InnoDB завершил инициализацию. Это включает любые отката или восстановления после сбоя, которые могут происходить в фоновом режиме во время запуска MariaDB.
Пользователь, производящий подключение, должен иметь привилегии USAGE для выполнения этого теста.
--innodb_buffer_pool_loaded
Это указывает на то, что дамп буфера пула, ранее сохранённый, был полностью загружен в буфер пула InnoDB, и, таким образом, сервер имеет готовый к использованию кэш. Это проверяет innodb_buffer_pool_load_status на наличие индикатора "complete".
Этот тест не проверяет, установлен ли innodb_buffer_pool_load_at_startup при запуске.
Пользователь, производящий подключение, должен иметь привилегии USAGE для выполнения этого теста.
--galera_online
Указывает, что узел Galera находится онлайн, по переменной wsrep_local_state. Это включает состояния, такие как "joining" и "donor", где он не может обслуживать запросы SQL.
Пользователь, производящий подключение, должен иметь привилегии USAGE для выполнения этого теста.
--replication
Этот тест проверяет репликацию на основе параметров --replication_*. Для успешного выполнения теста репликации необходимо успешно пройти все подтесты. Подтесты:
- io - поток IO работает
- sql - поток SQL работает
- seconds_behind_master - реплика отстаёт менее чем на X секунд от мастера.
- sql_remaining_delay - отставание реплики по задержке SQL выполнения менее чем на X секунд от выполнения SQL мастером.
Эти тесты выполняются для всех подключений, если --replication_all установлено (по умолчанию) или --replication_name.
Пользователь, производящий подключение, должен иметь привилегии REPLICATION_CLIENT, если используется версия ниже MariaDB 10.5, или REPLICA MONITOR для MariaDB 10.5 или более поздних версий.
--mariadbupgrade
Этот тест указывает, что MariaDB обновлён до текущей версии.
Параметры
--replication_all
Проверяет все источники репликации
--replication_name=n
Устанавливает имя канала многоканального соединения, которое подлежит проверке. Снимает установку --replication_all.
--replication_io
Поток IO работает
--replication_sql
Поток SQL работает
--replication_seconds_behind_master=n
Отставание не более указанного количества секунд.
--replication_sql_remaining_delay=n
Остаточное отставание не более указанного количества секунд.
--su=n
Переключение на данного пользователя. Может быть выполнено только один раз, так как по умолчанию для проверки используется root-пользователь.
--su-mysql
Переключение на пользователя mysql unix. Подобно --su, это перезапускает скрипт, сбросив все параметры. Должен быть первым аргументом. Переменная среды MARIADB_MYSQL_LOCALHOST_USER=1 разработана для использования именно здесь.
--datadir=n
Для теста --mariadbupgrade, где располагается файл обновления.
--no-defaults --defaults-file --defaults-extra-file --defaults-group-suffix
Передаются в mariadb shell для всех тестов, кроме --mariadbupgrade
Примеры
healtcheck.sh --su-mysql --connect --innodb_initialized
Переключение на пользователя mysql, и проверка возможности подключения и инициализации InnoDB.
healtcheck.sh --su-mysql --connect --replication_io --replication_sql --replication_seconds_behind_master=600 --replication_sql_remaining_delay=30 ----replication_name=archive --replication --replication_seconds_behind_master=10 --replication_name=channel1 --replication
Переключение на пользователя mysql, проверка возможности подключения, для канала репликации "archive", проверка работы потоков io и sql, отставание от мастера менее 600 секунд и остаточное отставание по SQL менее 30 секунд. Для канала "channel1" максимальное отставание от мастера ограничено 10 секундами.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/using-healthcheck-sh-script/