Bir önceki yazımızda yeni bir disk alanın ClickHouse nasıl eklenceğini gömüştük,
Burada ise bu eklediğimiz disk alanınn storage policy olarak tanımlanması ve bir tabloya bu storage policy nin verilmesi konusunu göreceğiz. Öncelikle mevcut olan storage policy nedir bir görelim;
SELECT
policy_name,
volume_name,
disks
FROM system.storage_policies
Query id: 968e99ee-7512-4871-bb58-d864d6ee63dc
┌─policy_name─┬─volume_name─┬─disks───────┐
│ default │ default │ ['default'] │
└─────────────┴─────────────┴─────────────┘
1 row in set. Elapsed: 0.003 sec.
Şu an sadece default var, dolayısıyla tüm tablolarımızın datası bu default alandadır, Bir tablo için datalarının yerini nasıl görürüz ona bakalım;
clickhouse :) select name , data_paths from system.tables where name='my_table'\G
name: my_table
data_paths: ['/var/lib/clickhouse/store/9e3/9e3f1821-10e7-4ee0-b54d-4ef76c55e632/']
1 row in set. Elapsed: 0.002 sec.
Şimdi ise config.d altındaki “storage_configuration.xml” dosyamıza (bu yoksa config.xml içerisine) storage policy lerimizi tanımlayalım, eğer cluster kullanıyorsak tüm node lar için bu işlem yapılmalıdır.
<clickhouse>
<storage_configuration>
<disks>
<dbdata>
<type>local</type>
<path>/data01/clickdata1/</path>
</dbdata>
<backup>
<type>local</type>
<path>/data01/backup/</path>
</backup>
</disks>
<policies>
<dbdata> <!-- name for new storage policy -->
<volumes>
<dbdata>
<disk>dbdata</disk>
</dbdata>
</volumes>
</dbdata>
</policies>
</storage_configuration>
<backups>
<allowed_disk>backup</allowed_disk>
<allowed_path>/data01/backup/</allowed_path>
</backups>
</clickhouse>
Kapatıp açma gerekmez kaydettiğimiz an yeni policy devreye girecektir.
SELECT
policy_name,
volume_name,
disks
FROM system.storage_policies
Query id: 13cbea12-4a6d-462c-a755-082813b46faa
┌─policy_name─┬─volume_name─┬─disks───────┐
│ dbdata │ dbdata │ ['dbdata'] │
│ default │ default │ ['default'] │
└─────────────┴─────────────┴─────────────┘
Şimdi ise bir tablo create ederken bu storage policy ile nasıl oluştururuz bunu görelim ; (SETTINGS storage_policy = 'dbdata')
create table hits.hits .........
ENGINE = ReplicatedMergeTree
PRIMARY KEY (CounterID, EventDate, UserID, EventTime, WatchID)
SETTINGS storage_policy = 'dbdata'
Tablomuzun yerini kontrol edelim;
clickhouse :) select name , data_paths from system.tables where name='hits'\G
SELECT
name,
data_paths
FROM system.tables
WHERE name = 'hits'
Query id: de92e716-cdf5-4dff-9a24-dcd33035b74c
Row 1:
──────
name: hits
data_paths: ['/data01/clickdata1/store/e1b/e1b03cba-14e1-4159-b99e-5464cb0e2047/']
1 row in set. Elapsed: 0.002 sec.
Mevcut bir tabloda Storage Policy değişikliği yapmak istersek;
clickhouse :) alter table my_table modify setting storage_policy='dbdata';
Bir yanıt yazın