Skip to content
Aleksei Chuprakov

Cases

Flagship cases with full write-ups, and shorter engineering notes.

Full write-ups

Engineering notes

Shorter notes without a page of their own.

  • Databases & data · 22 Sep 2026

    Rolling ClickHouse upgrade without staging

    Upgraded two shards × two replicas from 25.12.4.35 to 26.8.4.11 LTS one node at a time (order 4 → 2 → 3 → 1), watching replicas, the replication queue and ingestion after each node. The three Keeper nodes stayed unchanged; compatibility settings bridged the versions.

    Limits: A risk-reduction procedure; downtime was not measured.

    • ClickHouse
    • Keeper
    • Replication
  • Databases & data

    CDC under real backend constraints

    MySQL → Debezium → Kafka → ClickHouse with Avro and Schema Registry, a custom Java SMT, and a move from self-hosted Kafka to DigitalOcean Managed Kafka, with connector monitoring.

    Limits: errors.tolerance=all keeps the connector running by skipping records it cannot process — it is not a reliability guarantee. ReplacingMergeTree deduplicates eventually; nothing here is exactly-once.

    • Debezium
    • Kafka
    • Schema Registry
    • ClickHouse
  • Incidents & recovery

    A converter that passed tests and failed in production

    A custom Debezium converter passed synthetic tests but failed in production: real MySQL binlog string columns arrived as byte[], not the assumed String. Lesson: tests have to cover the real integration path and wire representation, not only idealized fixtures.

    Limits: A lesson, not a shipped process change.

    • Debezium
    • Kafka Connect
    • MySQL binlog
  • Databases & data

    PostgreSQL production operations

    NVMe and RAID replacement with recovery, S3 backups, statement diagnostics, and a cron job whose repeated GRANTs blocked queries — replaced with default privileges.

    Limits: Downtime of the hardware work was not measured.

    • PostgreSQL
    • RAID
    • S3
  • Databases & data · 6 Aug 2026

    Migrating Tableau Server across operating systems

    Moved Tableau Server 2024.2 on Debian to Ubuntu 24.04 with Tableau 2025.3.8 through a .tsbak backup; fixed permissions, the public host, ODBC and ingress; consolidated several sites.

    Limits: Downtime was not recorded.

    • Tableau Server
    • Ubuntu 24.04
    • ODBC
  • Platform & infrastructure

    Modernizing Airflow operations

    Airflow 2.10.4 and 3.x side by side, on Docker Compose and Kubernetes, with Celery, images built in GitLab, SSO, Slack alerts, StatsD → Prometheus metrics and dbt through Cosmos.

    Limits: HPA scales the Kubernetes workers; not every Airflow 3.x workload runs in Kubernetes.

    • Airflow
    • Kubernetes
    • Celery
    • dbt
  • Platform & infrastructure

    SSO with Keycloak and FreeIPA

    OIDC for Airflow, OpenMetadata, Lakekeeper and JupyterHub, separate service-to-service credentials, and access granted and revoked automatically.

    • Keycloak
    • FreeIPA
    • OIDC
  • Incidents & recovery · 13 Aug 2026

    Diagnosing a distributed query timeout

    Investigation note · unresolved

    Code 209 SOCKET_TIMEOUT in a distributed query; the load pointed to heavy remote system.tables reads and catalogs of PostgreSQL-engine databases.

    Limits: No confirmed final resolution.

    • ClickHouse
    • dbt
    • PostgreSQL engine
  • Incidents & recovery

    Bare-metal recovery notes

    Recovered a server's RAID10 and bootloader through Hetzner rescue mode; expanded a ClickHouse RAID10 array.

    • RAID10
    • Hetzner
    • Linux
  • Platform & infrastructure

    Internal infrastructure automation

    Ansible with DataGerry as the inventory source of truth, Proxmox with Ceph, self-hosted GitLab with Gitaly and LFS, and access tooling in Go.

    • Ansible
    • DataGerry
    • Proxmox
    • GitLab