Configuration Files
現在、XMLベースの設定プロファイルおよび構成ファイルはClickHouse Cloudではサポートされていません。そのため、ClickHouse Cloudではconfig.xmlファイルは見つかりません。代わりに、SQLコマンドを使用して設定を管理する必要があります。
詳細については、"設定の構成"を参照してください。
ClickHouseサーバーは、XMLまたはYAML構文の構成ファイルを使用して構成できます。
ほとんどのインストールタイプでは、ClickHouseサーバーはデフォルトの構成ファイルとして/etc/clickhouse-server/config.xml
を使用しますが、起動時にコマンドラインオプション--config-file
または-C
を使用して手動で構成ファイルの場所を指定することも可能です。
追加の構成ファイルは、メインの構成ファイルに対して相対的にconfig.d/
ディレクトリ内に配置できます。たとえば、/etc/clickhouse-server/config.d/
ディレクトリです。
このディレクトリ内のファイルとメイン構成は、ClickHouseサーバーで構成が適用される前の前処理ステップでマージされます。
構成ファイルはアルファベット順にマージされます。
更新を簡素化し、モジュール化を改善するために、デフォルトのconfig.xml
ファイルを変更せずに、追加のカスタマイズをconfig.d/
に配置することが最良のプラクティスです。
ClickHouse keeperの構成は/etc/clickhouse-keeper/keeper_config.xml
にあります。
したがって、追加のファイルは/etc/clickhouse-keeper/keeper_config.d/
に配置する必要があります。
XMLとYAMLの構成ファイルを混在させることが可能で、たとえば、メインの構成ファイルconfig.xml
と追加の構成ファイルconfig.d/network.xml
、config.d/timezone.yaml
、およびconfig.d/keeper.yaml
を持つことができます。
単一の構成ファイル内でXMLとYAMLを混在させることはサポートされていません。
XML構成ファイルは、最上位タグとして<clickhouse>...</clickhouse>
を使用する必要があります。
YAML構成ファイルでは、clickhouse:
はオプションであり、欠如している場合、パーサーが自動的に挿入します。
構成のマージ
2つの構成ファイル(通常、メインの構成ファイルとconfig.d/
からの別の構成ファイル)は、以下のようにマージされます。
- もしノード(すなわち、要素へのパス)が両方のファイルに存在し、属性
replace
またはremove
がない場合、それはマージされた構成ファイルに含まれ、両方のノードからの子要素が含まれ、再帰的にマージされます。 - 両方のノードのいずれかに属性
replace
が含まれている場合、マージされた構成ファイルに含まれますが、replace
属性を持つノードの子要素のみが含まれます。 - 両方のノードのいずれかに属性
remove
が含まれている場合、そのノードはマージされた構成ファイルには含まれません(すでに存在する場合は削除されます)。
例:
と
マージされた構成ファイルは次のようになります:
環境変数およびZooKeeperノードによる代入
要素の値を環境変数の値で置き換える必要があることを指定するには、属性from_env
を使用できます。
例として、$MAX_QUERY_SIZE = 150000
の場合:
これは次のように等しいです:
同様にfrom_zk
(ZooKeeperノード)を使用しても可能です:
これは次のように等しいです:
デフォルト値
from_env
またはfrom_zk
属性を持つ要素は、追加で属性replace="1"
を持つことができます(後者はfrom_env
/from_zk
より前に現れる必要があります)。
この場合、要素はデフォルト値を定義することができます。
要素は、環境変数またはZooKeeperノードの値を取得しますが、セットされていない場合はデフォルト値を使用します。
前の例では、MAX_QUERY_SIZE
が設定されていないと仮定します:
結果:
ファイル内容による置換
構成の一部をファイルの内容で置き換えることも可能です。これには2つの方法があります:
-
値の代入: 要素が属性
incl
を持つ場合、その値は参照されたファイルの内容で置き換えられます。デフォルトでは、置換を行うファイルへのパスは/etc/metrika.xml
です。これはサーバーの設定でinclude_from要素で変更することができます。置換の値はこのファイル内の/clickhouse/substitution_name
要素で指定されます。incl
で指定された置換が存在しない場合、ログに記録されます。ClickHouseが不足している置換をログに記録しないようにするには、属性optional="true"
を指定します(たとえば、マクロの設定など)。 -
要素の代入: 要素全体を置換で置き換えたい場合は、
include
という要素名を使用します。要素名include
は、属性from_zk = "/path/to/node"
と組み合わせることができます。この場合、要素の値は/path/to/node
にあるZooKeeperノードの内容で置き換えられます。これにより、ZooKeeperノードとしてXMLサブツリー全体を保存している場合、それは元の要素に完全に挿入されます。
例:
置換対象の内容を既存の構成とマージする代わりに追加したい場合は、属性merge="true"
を使用できます。たとえば:<include from_zk="/some_path" merge="true">
のように。これにより、既存の構成が置換の内容とマージされ、既存の構成設定は置換からの値に置き換えられます。
構成の暗号化と隠蔽
対称暗号化を使用して構成要素を暗号化できます。たとえば、平文のパスワードや秘密鍵などです。
これを行うには、まず暗号化コーデックを構成し、その後、暗号化する要素に対して、暗号化コーデックの名前を値として持つ属性encrypted_by
を追加します。
属性from_zk
、from_env
およびincl
、または要素include
とは異なり、前処理されたファイル内では代入(すなわち、暗号化された値の復号)は行われません。
復号は、サーバープロセスの実行時にのみ行われます。
例:
属性from_envおよびfrom_zkはencryption_codecs
にも適用できます:
暗号化キーと暗号化された値は、どちらの構成ファイルにも定義できます。
例config.xml
:
例users.xml
:
値を暗号化するには、(例)プログラムencrypt_decrypt
を使用できます:
例:
暗号化された構成要素でも、暗号化された要素は前処理された構成ファイル内に表示されます。
これがあなたのClickHouseデプロイメントにとって問題である場合、2つの代替案があります。前処理されたファイルのファイル権限を600に設定するか、属性hide_in_preprocessed
を使用します。
例:
ユーザー設定
config.xml
ファイルは、ユーザー設定、プロファイル、およびクォータのための別の構成を指定できます。この構成への相対パスはusers_config
要素で設定されます。デフォルトでは、users.xml
です。users_config
が省略されると、ユーザー設定、プロファイル、およびクォータは直接config.xml
に指定されます。
ユーザー構成は、config.xml
およびconfig.d/
と同様に、別々のファイルに分割できます。
ディレクトリ名は、.xml
の接尾辞を持たず、.d
が連結されたusers_config
設定として定義されます。
ディレクトリusers.d
がデフォルトで使用され、users_config
のデフォルトはusers.xml
です。
構成ファイルは、最初にマージされて設定が考慮され、包含がその後で処理されることに注意してください。
XML例
たとえば、次のように各ユーザーのための別々の構成ファイルを持つことができます:
YAMLの例
ここでは、YAMLで書かれたデフォルト構成が確認できます:config.yaml.example。
YAMLとXML形式のClickHouse構成にはいくつかの違いがあります。YAML形式で構成を書くためのいくつかのヒントを以下に示します。
テキスト値を持つXMLタグは、YAMLのキーと値のペアで表現されます
対応するXML:
ネストされたXMLノードはYAMLのマップで表現されます:
対応するXML:
同じXMLタグを複数回作成するには、YAMLシーケンスを使用します:
対応するXML:
XML属性を提供するには、@
プレフィックスを持つ属性キーを使用できます。@
はYAML標準で予約されているため、二重引用符で囲む必要があります:
対応するXML:
YAMLシーケンス内でも属性を使用することが可能です:
対応するXML:
前述の構文では、XML属性を持つXMLテキストノードをYAMLで表現することはできません。この特別なケースは、#text
属性キーを使用することで達成できます:
対応するXML:
実装詳細
各構成ファイルに対して、サーバーは起動時にfile-preprocessed.xml
ファイルも生成します。これらのファイルには、すべての完了した置換とオーバーライドが含まれており、情報提供用に意図されています。構成ファイルでZooKeeper置換が使用されているが、サーバー起動時にZooKeeperが利用できない場合、サーバーはプレ処理されたファイルから構成を読み込みます。
サーバーは、構成ファイルの変更、ならびに置換とオーバーライドを実行する際に使用されたファイルやZooKeeperノードを追跡し、ユーザーやクラスターの設定をオンザフライで再読み込みします。これは、サーバーを再起動せずにクラスター、ユーザー、およびその設定を変更できることを意味します。