ClickHouse. Не используйте и для диска в одной директории
Проблема
Если вам придется делать ноду для ClickHouse из нескольких дисков, то не указывайте путь для дисков тот,
что указан в настройке <path>
.
<storage_configuration>
<disks>
<disk_hdd>
<path>/var/lib/clickhouse-hdd/</path>
</disk_hdd>
<disk_ssd>
<path>/var/lib/clickhouse-ssd/</path>
</disk_ssd>
</disks>
<policies>
<moving_to_ssd>
<volumes>
<hot>
<disk>disk_ssd</disk>
</hot>
<cold>
<disk>disk_hdd</disk>
</cold>
</volumes>
<move_factor>0.2</move_factor>
</moving_to_ssd>
</policies>
</storage_configuration>
<!-- Path to data directory, with trailing slash. -->
<path>/var/lib/clickhouse-hdd/</path>
CREATE TABLE stripcash.events
(
`type` UInt64,
`eventAt` DateTime,
`eventDate` Date DEFAULT toDate(clickAt),
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(eventDate)
SETTINGS storage_policy = 'moving_to_ssd'
Причина
Если вы запустите сервер с такими настройками вы не получите никаких предупреждений. Вы начнете спокойно использовать такую конфигурацию и вставлять данные в таблицу. Но если вы перезапустите сервере то увидите ошибку:
2020.06.15 05:54:59.867745 [ 195173 ] {} <Error> Application: DB::Exception: Part `201811_0_2998_6` was found on disk `default` which is not defined in the storage policy: Cannot attach table `default`.`events` from metadata file
При старте сервера CH находит парты в пути /var/lib/clickhouse-hdd/
и думает что нашел парты в path
. Тот путь что указан path
считается диском с именем default
и выдает ошибку:
Решение
- Создайте пути
/var/lib/clickhouse-hdd/hdd
и/var/lib/clickhouse-hdd/default
- Поменяйте конфигурацию на:
<storage_configuration>
<disks>
<disk_hdd>
<path>/var/lib/clickhouse-hdd/hdd/</path>
</disk_hdd>
<disk_ssd>
<path>/var/lib/clickhouse-ssd/</path>
</disk_ssd>
</disks>
<policies>
<moving_to_ssd>
<volumes>
<hot>
<disk>disk_ssd</disk>
</hot>
<cold>
<disk>disk_hdd</disk>
</cold>
</volumes>
<move_factor>0.2</move_factor>
</moving_to_ssd>
</policies>
</storage_configuration>
<!-- Path to data directory, with trailing slash. -->
<path>/var/lib/clickhouse-hdd/default/</path>
- Переместите все из
/var/lib/clickhouse-hdd/
в/var/lib/clickhouse-hdd/default
кромеhdd
иdefault
- Переместите из
/var/lib/clickhouse-hdd/default/data/events
в/var/lib/clickhouse-hdd/hdd/data/events
- Запустите сервер.
Таким образом все парты относящиеся к политике moving_to_ssd
будут на месте.
comments powered by Disqus