Learning Platform
Глоссарий Troubleshooting
Урок 15.12 · 15 мин
Продвинутый
summaryproduction operationssystem tablesRBACbackupsschema migrationsEXCHANGE TABLEScluster scalingthread poolsPrometheusClickStackOpenTelemetryHyperDX

Итоги модуля: Production Operations

Модуль 14 охватил одиннадцать ключевых областей эксплуатации ClickHouse в production: от наблюдаемости через системные таблицы и мониторинг до безопасности (RBAC), надёжности (backup), управления схемой (DDL), масштабирования, понимания внутренней архитектуры сервера и развёртывания полного observability-стека на базе ClickStack.


Ключевые решения производственной эксплуатации

  1. Системные таблицы для наблюдаемости (OPS-01). system.query_log (постфактум-анализ запросов: memory_usage, read_rows, ProfileEvents), system.part_log (события с частями: MERGE_PARTS, DOWNLOAD_PART), system.merges (активные слияния с прогрессом), system.replicas (состояние репликации: is_readonly, absolute_delay), system.processes (живые запросы в реальном времени), system.mutations (фоновые мутации: is_done, parts_to_do), system.distribution_queue (очередь async inserts в Distributed таблицы). Каждая таблица решает конкретный диагностический сценарий.

  2. SYSTEM-команды для оперативного управления (OPS-02). KILL QUERY WHERE query_id='...' SYNC — немедленная остановка запроса. KILL MUTATION WHERE table='...' — отмена зависших mutations. SYSTEM FLUSH LOGS — принудительный flush логов перед диагностикой. SYSTEM RELOAD DICTIONARIES — перезагрузка словарей без перезапуска сервера. SYSTEM DROP MARK CACHE / DROP UNCOMPRESSED CACHE — очистка кэшей. SYSTEM SYNC REPLICA — ожидание синхронизации реплики.

  3. Grafana dashboards с ClickHouse datasource (OPS-03). Официальный плагин grafana-clickhouse-datasource поддерживает макросы: $__timeFilter(event_time) (фильтр временного диапазона), $__timeInterval(event_time) (bucket по выбранному интервалу дашборда), $__dateFilter(date). Макросы позволяют строить динамические dashboard-панели, чувствительные к выбору временного диапазона в Grafana UI. Нативный Prometheus endpoint на порту 9363 — GA, без sidecar.

  4. RBAC: роли, пользователи, политики строк (OPS-04). SQL-based RBAC (default с ClickHouse 20.x): CREATE USER, CREATE ROLE, GRANT SELECT(col1, col2) ON db.table TO role (column-level granularity), CREATE ROW POLICY USING condition TO role (row-level isolation), CREATE QUOTA FOR INTERVAL 1 HOUR MAX queries=N TO role (rate limiting). Критический gotcha: после создания ROW POLICY все пользователи без явной policy теряют доступ к таблице — всегда создавать allow-policy для admin-ролей.

  5. Backup и восстановление (OPS-05). Нативный SQL: BACKUP DATABASE db TO S3('url', 'key', 'secret') — полный бэкап; SETTINGS base_backup = S3(...) — инкрементальный (копирует только изменённые части). RESTORE DATABASE FROM S3(...) — восстановление (инкрементальный включает базовый автоматически). clickhouse-backup (Altinity) — для автоматизированных workflows с GPG-encryption и возобновлением.

  6. Schema-миграции: стоимость DDL-операций (OPS-06). ADD COLUMN — metadata-only, мгновенно. DROP COLUMN — мгновенно для доступа, физическое удаление данных при следующем merge. MODIFY COLUMN с несовместимым типом — запускает background mutation. ON CLUSTER DDL ordering: DDL на всех узлах кластера ПЕРЕД деплоем нового кода приложения. Replicated database engine — автоматическая репликация DDL без ON CLUSTER.

  7. Atomic DDL: EXCHANGE TABLES и zero-downtime (OPS-07). EXCHANGE TABLES a AND b — атомарный swap двух таблиц (требует Atomic engine, default с 20.x). RENAME TABLE не атомично для нескольких объектов. Zero-downtime migration pattern: CREATE TABLE new -> INSERT INTO SELECT -> ALTER new -> EXCHANGE -> DROP old. Rollback: повторный EXCHANGE до DROP.

  8. Масштабирование кластера (OPS-08). Нет авто-rebalancing при добавлении шарда: исторические данные остаются на старых шардах. Методы rebalancing: DETACH PARTITION + ATTACH (наиболее быстрый), INSERT INTO SELECT через Distributed (создаёт сетевую нагрузку), clickhouse-copier (для массового переноса). Добавление реплики с тем же ZooKeeper path — автоматический GET_PART fetch без ручного вмешательства.

  9. Архитектура сервера: thread pools и жизненный цикл запроса (OPS-09). BackgroundSchedulePool — периодические задачи (TTL, refreshable MV, dictionary reloads). MergeTreeBackgroundExecutor — merges, mutations, fetches, moves с приоритизацией коротких задач. Global Thread Pool — пользовательские запросы и I/O. Жизненный цикл запроса: connection -> parsing -> analysis (New Analyzer 24.3+) -> optimization -> pipeline build -> vectorized execution.

  10. ClickHouse как Prometheus long-term storage (OPS-10). remote_write handler принимает Prometheus-метрики в ENGINE = TimeSeries таблицу. remote_read handler отвечает на запросы исторических метрик. expose_metrics — независимый handler для мониторинга самого ClickHouse. Создайте TimeSeries таблицу ДО настройки remote_write handler. SQL-аналитика над накопленными метриками — ключевое преимущество ClickHouse как long-term storage.

  11. ClickStack: единый observability-стек (OPS-11). Бандл из ClickHouse (хранилище), OpenTelemetry Collector (ingestion) и HyperDX UI (фронтенд для логов/трейсов/метрик/session replay). Анонсирован в мае 2025 после приобретения HyperDX (март 2025). Кросс-сигнальная корреляция на уровне БД через SQL JOIN, а не на уровне приложения. ZSTD-сжатие даёт 10-30× компрессию vs ELK. Self-hosted Helm chart (ClickStack/clickstack) или Managed ClickStack в ClickHouse Cloud (beta). RBAC, alerting, multi-tenancy появились во второй половине 2025.


Что дальше

Module 15: Integrations — dbt-clickhouse (4 incremental strategies, cluster mode), новый JSON type (GA 25.3), Variant/Dynamic types, clickhouse-local для ad-hoc аналитики, Apache Iceberg bidirectional (25.8+), UDFs, и обзор реальных production-архитектур (PostHog, Cloudflare, GitLab). Интеграции расширяют ClickHouse от изолированного аналитического сервера до центрального компонента data-платформы.

TIP

Для закрепления материала рекомендуется выполнить лабораторные упражнения в labs/monitoring/ (Module 14): развернуть мониторинг-стек (ClickHouse + Prometheus + Grafana), настроить expose_metrics и remote_write handlers, построить dashboard в Grafana с макросами $__timeFilter и $__timeInterval. Для операционных сценариев (schema migrations, EXCHANGE TABLES) потребуется ClickHouse сервер: docker run -p 8123:8123 clickhouse/clickhouse-server:26.3.

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 12