
ClickHouse konfigürasyon dosyaları ya xml veya yaml dosyalarından oluşmaktadır. ClickHouse Server kurulumda eğer özel bir lokasyon belirtilmemişse, tüm clickhouse server konfigürasyonları /etc/clickhouse-server/config.xml dosyası içerisindnedir. Ayrıca user konfigirasyonlarıda aynı dizindeki users.xml içerisindedir. Bu konfigürasyonlar alt konfigürasyon dosyalarına ayrılabilmektedir, buların dizinleri ise;
/etc/clickhouse-server/config.xml --> Server Konfigürasyon dosyası
/etc/clickhouse-server/users.xml --> User Konfigürasyon dosyası
/etc/clickhouse-server/config.d/ --> Server Setting Alt Klasörü
/etc/clickhouse-server/users.d/ --> User Settings Alt kalsörü
Server konfigürasyonu ile ilgili olarak tüm konfigürasyonlar config.xml de olabileceği gibi , buradaki bazı konfigürasyonlar config.d dizini altına alınabilir, aynı şekilde user konfigürasyonlarının bazı özellikleride users.d dizini altına ayrıca alınabilir. Örneğin Server Network ile iligli konfigürasyonlar config.xml içerisinde <network>..</network> xml taglari arasına alınabileceği gibi, config.d dizini altında ayır bir network.xml dosyasında da barındırılabilmektedir.
Örnek olarak;
$ cat /etc/clickhouse-server/config.d/listen.xml
<clickhouse>
<listen_host>0.0.0.0</listen_host>
</clickhouse>
$ cat /etc/clickhouse-server/config.d/macros.xml
<clickhouse>
<macros>
<cluster>mycluster</cluster>
<shard>02</shard>
<replica>clicknode02</replica>
<layer>01</layer>
</macros>
</clickhouse>
Bazı parametrelerin değiştirilmesi database restart gerektirirken , bazılarının değiştirilmesi database restart gerektirmez. Genelleme yapacak olursak config.xml ve config.d dizini altındaki konfigürasyon dosyalarında yapılan değişiklikler restart gerektirirken, users.xml ve users.d altındaki dosyalarda yapılan konfigürasyon değişiklikleri restart gerektirmez , bu kesin değildir ve istisanaları vardır.
Bir Konfigürasyonu kaldırmak için remove kullanılır, başkasıyla değiştirmek için ise replace kullanılır. örneğin defaul userı kaldırmak için;
<users>
<default remove="remove">
</default>
Hangi parametre config.xml ve config.d dizini altında , hangi parametreler users.xml veya users.d dizini altında olduğu bazen düşündürücü olabilmekte , bunun ayrımını yapabilmek için ; system.parameters tablosuna bakılabilir, system.parameters tablosunda olan parametreler users.xml ve user.d dizini ile ilgilidir, değilse config.xml ve config.d dizini altında aranmalıdır. Buna web arayüzünden bakalım, Konumuz config.xml olduğu için config.xml file içerisinde web portu yazmaktadır.
Web arayüzü için http://<fqdn>:8123/play
<http_port>8123</http_port>

USER Configuration
User konfigürasyonları konfigürasyon dosyaları üzerinden yapılabidiği gibi SQL ifadeler ilede yapılabilir, yukarıda bahsettiğimiz üzer user konfigürasyonlarını system.settings tablosu üzerinden tüm konfigürasyonları görebiliriz. Peki genel olarak User Konfigürasyonları ile hangi ayarları yapabiliriz;
- User Network Settings IP ve Hostaname (FQDN) üzerinden database server erişimleri filtre edilemebilmektedir. bu filter users.xml üserinden , profile üzerinden veya SQL ile yapılabilmektedir;
- IP: IP adresi veya netmask.
-
0.0.0.0/0–> IPv4,::/0–> IPv6
-
- Host: DNS resolved hostname
- Host Regexp (Regular Expression)
- IP: IP adresi veya netmask.
CREATE USER IF NOT EXISTS btl
IDENTIFIED WITH SHA256_PASSWORD BY 'parola123'
HOST IP '192.168.100.1/24' SETTINGS readonly=1;
ALTER USER zyn HOST REGEXP 'clicknode[12345].farukcevik.com';
- Secure Password users.xml ile veya sql ifadeler ile user create ederken sha256 password üretmek zorunlu olmasada tavsiye edilmektedir. linux üzerinden sha256 password üretmek için aşağıdaki bash kullanılabilir
# echo -n "parola123" | sha256sum| tr -d '-'
- Set Quota Quota SQL ifadeler ile oluşturulup user a set edilebilirken, users.xml üserinden veya users.d altında ilgili user için oluşturulan xml içerisine de tanımlanabilmektedir.
- Use Profile Profile SQL ifadeler ile oluşturulup user a set edilebilirken, users.xml üserinden veya users.d altında ilgili user için oluşturulan xml içerisine de tanımlanabilmektedir.
En Çok kullanılan profile ayarları aşağıda verilmiştir, bu ayarlar sizin sistem özelliklerinize göre konfigüre edilmelidir.
readonlymax_execution_timeBir işlemin max çalışma süresi sınırıdır.max_bytes_before_external_group_byTek bir prosessin sıralma için kullanabileceği MAX Bellek miktarıdır. (ORDER BY)max_bytes_before_external_sortSıralama işlemleri için ayrılan MAX bellek miktarıdır.
- Database Restrictions
- Enable Remote Authentication
Bir cluster da users parametreleri ile ilgili hangi değerler sonradan değiştirilmiş görmek için;
SELECT name,value FROM system.settings where changed=1;
SELECT
name,
value
FROM system.settings
WHERE changed = 1
Query id: e32a7cc7-e581-40ad-83f9-3edd08960b68
┌─name────────────────────────────────────────┬─value────────┐
│ max_threads │ 48 │
│ connect_timeout_with_failover_ms │ 1000 │
│ receive_timeout │ 3000 │
│ send_timeout │ 3000 │
│ distributed_directory_monitor_batch_inserts │ 1 │
│ load_balancing │ random │
│ distributed_aggregation_memory_efficient │ 1 │
│ aggregation_memory_efficient_merge_threads │ 16 │
│ log_queries │ 1 │
│ max_bytes_before_external_group_by │ 80000000000 │
│ max_memory_usage │ 322122547200 │
│ low_cardinality_max_dictionary_size │ 100000 │
│ max_partitions_per_insert_block │ 300 │
│ materialize_ttl_after_modify │ 0 │
│ background_pool_size │ 48 │
│ background_move_pool_size │ 16 │
│ background_fetches_pool_size │ 16 │
│ background_schedule_pool_size │ 128 │
└─────────────────────────────────────────────┴──────────────┘
18 rows in set. Elapsed: 0.005 sec.
Bir yanıt yazın