Files
tf_provider/docs/30_registry/resources/clickhouse.md
T
2026-06-30 15:45:24 +04:00

7.4 KiB

Resource nubes_clickhouse

Service ID: 120

Service Name: ClickHouse

Overview | Parameters | Operations

MAN

Инструкция по управлению кластерами и пользователями ClickHouse

---

## Общая информация

ClickHouse — это колоночная система управления базами данных, предназначенная для обработки аналитических запросов в реальном времени. Платформа позволяет создавать, удалять, приостанавливать и возобновлять кластеры ClickHouse, а также управлять базами данных и пользователями.

Кластер создаётся через оператор Altinity (https://github.com/Altinity/clickhouse-operator) в ресурсной платформе типа k8s

Кластеры могут создаваться шардированными с произвольным количеством реплик. Для обеспечения отказоустойчивости и координации обязательно включение параметра Создать ClickHouse-Keeper.

Кластера создаются с обязательным бекапом. Для этого необходимо предварительно создать услугу S3 Object Storage.
---

## Доступные операции

* create — Создание кластера
* delete — Удаление кластера
* suspend — Приостановка работы кластера
* resume — Возобновление работы кластера
* create_database — Создание базы данных
* delete_database — Удаление базы данных
* create_user — Создание пользователя и настройка прав доступа к базе данных
* delete_user — Удаление пользователя

## Процесс создания и первого подключения

1. Выполнить операцию create - будет создан кластер
2. Выполнить операцию create_database - будет создана база данных
3. Выполнить операцию create_user - будет создан пользователь (выбрать доступ подключения к БД, созданной в п.2)

## Примеры подключения

### Подключение через HTTP-интерфейс

bash<br/># Проверка доступности кластера<br/>curl &quot;http://&lt;username&gt;:&lt;password&gt;@&lt;host&gt;:8123/&quot; -d &quot;SELECT 1&quot;<br/><br/># Выполнение запроса<br/>curl &quot;http://&lt;username&gt;:&lt;password&gt;@&lt;host&gt;:8123/&quot; -d &quot;SHOW DATABASES&quot;<br/>

## Простые кейсы
Создать БД и обычной таблицы
clickhouse<br/>CREATE TABLE database.table<br/>(<br/> id UInt64,<br/> value String<br/>)<br/>ENGINE = MergeTree()<br/>ORDER BY id;<br/><br/>INSERT INTO database.table SELECT number, toString(number) FROM numbers(10000000);<br/><br/>SELECT count() FROM database.table;<br/>
Базы и таблицы не реплицируются без специального ключа (ON CLUSTER 'clickhousek8s')
В случае создания в стиле, описанным выше, необходимо будет выполнять действия на всех шардах/репликах


Создание БД и шардированной таблицы
clickhouse<br/>CREATE TABLE database.localUsers<br/>(<br/> id UInt64,<br/> value String<br/>)<br/>ENGINE = MergeTree()<br/>ORDER BY id;<br/><br/>CREATE TABLE database.shardedTable<br/>AS localUsers<br/>ENGINE = Distributed('clickhousek8s', 'database', 'localUsers', id);<br/><br/>INSERT INTO shardedTable SELECT number, toString(number) FROM numbers(10000000);<br/><br/>SELECT count() FROM shardedTable;<br/>
Важный момент - в данном примере таблицы придётся также выполнять на всех нодах ClickHouse

Создание реплицируемой и шардированной таблицы
clickhouse<br/>CREATE TABLE IF NOT EXISTS database.localUsers ON cluster 'clickhousek8s'<br/>(<br/> user_id UInt64,<br/> name String,<br/> email String<br/>)<br/>ENGINE = ReplicatedMergeTree(<br/> '/clickhouse/tables/{shard}/localUsers',<br/> '{replica}'<br/>)<br/>ORDER BY user_id;<br/><br/>CREATE TABLE IF NOT EXISTS database.users ON cluster 'clickhousek8s'<br/>AS database.localUsers<br/>ENGINE = Distributed('clickhousek8s', 'database', 'localUsers', rand());<br/><br/>INSERT INTO database.users VALUES (1, 'Alice', 'alice@example.com');<br/>INSERT INTO database.users VALUES (2, 'Bob', 'bob@example.com');<br/>INSERT INTO database.users VALUES (3, 'Charlie', 'charlie@example.com');<br/>INSERT INTO database.users VALUES (4, 'David', 'david@example.com');<br/>INSERT INTO database.users VALUES (5, 'Gosha', 'gosha@example.com');<br/>INSERT INTO database.users VALUES (6, 'Eve', 'eve@example.com');<br/>INSERT INTO database.users VALUES (7, 'Frank', 'frank@example.com');<br/>INSERT INTO database.users VALUES (8, 'Grace', 'grace@example.com');<br/>INSERT INTO database.users VALUES (9, 'Hannah', 'hannah@example.com');<br/>INSERT INTO database.users VALUES (10, 'Ivan', 'ivan@example.com');<br/><br/>SELECT * FROM database.localUsers;<br/>SELECT * FROM database.users;<br/><br/>SELECT COUNT(*) AS total_users FROM database.users;<br/>SELECT COUNT(*) AS total_users_local FROM database.localUsers;<br/>

Summary

Инструкция по управлению кластерами и пользователями ClickHouse

Example

resource "nubes_clickhouse" "example" {
  resource_realm = "TODO"
  s3_uid = "235e0546-..."
  resource_instances = 1
  resource_instances_shards = 1
  resource_c_p_u = 1000
  resource_memory = 1536
  app_version = 25.10
  resource_disk = 10
  need_external_address_master = false
  need_create_keeper = true
  resource_c_p_u_keeper = 50
  resource_memory_keeper = 152
  resource_instances_keeper = 1
  ext__b_a_c_k_u_p__s_c_h_e_d_u_l_e = 0 0 * * *
  ext__b_a_c_k_u_p__n_u_m__t_o__r_e_t_a_i_n = 7
  adopt_existing_on_create = НЕТ
  suspend_on_destroy       = ДА
}

Outputs

  • state_params (map)
  • state_out (map)
  • state_params_flat (map)
  • state_out_flat (map)
  • vault_secrets (map)
  • vault_url (string)
  • vault_user_path (string)
  • vault_fields (list)

Lifecycle defaults

  • suspend_on_destroy_default = True
  • adopt_existing_on_create_default = False

Lifecycle behavior

  • For suspend-capable services: cloud status missing/deleted => create, suspend + key params match => resume.
  • running requires explicit adopt_existing_on_create=true for adopt/import behavior, otherwise error.
  • Destroy uses suspend_on_destroy: true => suspend, false => remove from state only.