Skip to content

Instantly share code, notes, and snippets.

View Slach's full-sized avatar
💭
deep diving into kuberntes

Eugene Klimov Slach

💭
deep diving into kuberntes
View GitHub Profile
@Slach
Slach / distributed_ddl_explain.md
Created May 9, 2025 05:40
Как работает distributed ddl в clickhouse

Распределенные DDL-задания: хранение, выполнение и очистка

Структура хранения заданий в Keeper (ZooKeeper)

Когда в ClickHouse выполняется распределенный DDL-запрос (ON CLUSTER), он сохраняется в распределенной очереди задач в Keeper (аналог ZooKeeper). В конфигурации задается путь для этой очереди (например, /clickhouse/task_queue/ddl), и каждый новый DDL-запрос на весь кластер добавляется как новый узел (znode) в этом разделе. Узел создается с флагом persistent sequential – то есть получает уникальное имя вида query-<число> по возрастанию github.com. Таким образом, в Keeper хранится упорядоченный список задач.

Данные каждого узла (задачи) содержат сериализованную информацию о DDL-запросе. В коде это структура DDLLogEntry, которая при сохранении превращается в текстовые строки. В узле сохраняются поля: версия формата записи, сам текст SQL-запроса, список це

Интеграция Go-логики в фронтенд Grafana без использования WebAssembly

Контекст и цель задачи

Grafana-плагины для источников данных обычно состоят из фронтенда (JavaScript/TypeScript, выполняется в браузере) и опционального бэкенда (как правило, на Go, запускается на сервере). Однако официальная площадка Grafana Marketplace принимает только плагины, которые могут работать без отдельного бэкенда или бинарных модулей. В нашем случае сложная бизнес-логика (~100 KB Go-кода в нескольких файлах) реализована на Go для бэкенда плагина, и ее требуется перенести во фронтенд (TypeScript) без использования WebAssembly.

Причины отказа от WebAssembly связаны с ограничениями Grafana: плагины с WASM-модулями не поддерживаются официально. В частности, попытки напрямую импортировать .wasm в плагин приводят к ошибкам типа “Response has unsupported MIME type” при загрузке файла [community.grafana.com](https://community.grafana.com/t/how-can-i-import-a-wasm-file/33642#:~:text=The%20error%20message%20I%20get,and%20l

@Slach
Slach / CommonComments.md
Last active February 25, 2025 07:56
how clickhouse-operator shall manage clickhouse-keeper scaling
  • cllickhouse-keeper have configuration in XML format,
  • NuRaft (quorum library) have internal state which stored /var/lib/clickhouse/coordination/state

24.8 clickhouse-keeper version allow rescale with declarative change the configs

@Slach
Slach / backup-cronjob.yaml
Last active July 19, 2024 11:55
clickhouse-backup CronJob examples
apiVersion: batch/v1
kind: CronJob
metadata:
name: clickhouse-backup-cron
spec:
# every day at 00:00
# schedule: "0 0 * * *"
schedule: "* * * * *"
concurrencyPolicy: "Forbid"
jobTemplate:
@Slach
Slach / ai-oracle.ipynb
Created April 15, 2024 05:36
ai-oracle
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@Slach
Slach / clickhouse-keeper.xml
Created December 27, 2023 14:24
reproduce ALTER TABLE FREEZE for encrypted over s3 disk for ReplicatedMergeTree
<clickhouse>
<listen_host replace="replace">0.0.0.0</listen_host>
<logger>
<console>1</console>
</logger>
<keeper_server>
<tcp_port>2181</tcp_port>
</keeper_server>
</clickhouse>
@Slach
Slach / checksum_parser.sh
Last active November 19, 2023 09:13
clickhouse checksums.txt parser in bash
CHECKSUM_FILE=$1
if [[ "ENC" == $(dd if="${CHECKSUM_FILE}" bs=1 skip="0" count="3" 2>/dev/null) ]]; then
echo "ENCRYPTED FILES don't supported"
exit 0
fi
FORMAT_VERSION=$(head -n +1 "${CHECKSUM_FILE}" | sed 's/checksums format version: //g')
log() { printf '%s\n' "$*"; }
error() { log "ERROR: $*" >&2; }
fatal() { error "$@"; exit 1; }
@Slach
Slach / .gitignore
Last active November 17, 2023 06:41
try to upgrade statefulset image without restart all clusters
*.yaml
@Slach
Slach / docker-compose.yaml
Created October 24, 2023 18:16
add XML users grants example
services:
clickhouse:
image: ${CLICKHOUSE_IMAGE:-clickhouse/clickhouse-server}:${CLICKHOUSE_VERSION:-latest}
volumes:
- ./xml_user_grants.xml:/etc/clickhouse-server/users.d/xml_user_grants.xml
@Slach
Slach / access_management.xml
Created October 25, 2021 07:11
ClickHouse Schema Migration control
<yandex>
<default><access_management>1</access_management></default>
</yandex>