الانتقال إلى المحتوى الرئيسي
ملفات الإعداد وملفات التعريف للإعدادات المستندة إلى XML غير مدعومة في ClickHouse Cloud. لذلك، في ClickHouse Cloud، لن تجد ملف config.xml. وبدلًا من ذلك، يجب استخدام أوامر SQL لإدارة الإعدادات من خلال ملفات تعريف الإعدادات.للمزيد من التفاصيل، راجع “تهيئة الإعدادات”
يمكن تهيئة ClickHouse server باستخدام ملفات إعداد بصيغة XML أو YAML. في معظم أنواع التثبيت، يعمل ClickHouse server باستخدام /etc/clickhouse-server/config.xml بوصفه ملف الإعداد الافتراضي، ولكن يمكن أيضًا تحديد موقع ملف الإعداد يدويًا عند بدء تشغيل الخادم باستخدام خيار سطر الأوامر --config-file أو -C. يمكن وضع ملفات إعداد إضافية داخل الدليل config.d/ نسبةً إلى ملف الإعداد الرئيسي، على سبيل المثال داخل الدليل /etc/clickhouse-server/config.d/. تُدمج الملفات الموجودة في هذا الدليل مع الإعداد الرئيسي في خطوة معالجة مسبقة قبل تطبيق الإعداد في ClickHouse server. تُدمج ملفات الإعداد بترتيب أبجدي. ولتسهيل التحديثات وتحسين التنظيم إلى وحدات، من أفضل الممارسات إبقاء ملف config.xml الافتراضي دون تعديل، ووضع أي تخصيصات إضافية في config.d/. يوجد إعداد ClickHouse Keeper في /etc/clickhouse-keeper/keeper_config.xml. وبالمثل، يجب وضع ملفات الإعداد الإضافية الخاصة بـ Keeper في /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: اختياريًا، وإذا كان غير موجود، فإن المُحلِّل يدرجه تلقائيًا.

دمج ملفات الإعداد

يُدمَج ملفا إعداد (عادةً ملف الإعداد الرئيسي وملف إعداد آخر من config.d/) كما يلي:
  • إذا ظهرت عقدة (أي path يؤدي إلى عنصر) في كلا الملفين ولم تكن تحتوي على السمات replace أو remove، فتُضمَّن في ملف الإعداد المدمج، كما تُضمَّن العناصر الفرعية من كلتا العقدتين وتُدمَج تكراريًا.
  • إذا كانت إحدى العقدتين تحتوي على السمة replace، فتُضمَّن في ملف الإعداد المدمج، ولكن لا تُضمَّن إلا العناصر الفرعية من العقدة التي تحتوي على السمة replace.
  • إذا كانت إحدى العقدتين تحتوي على السمة remove، فلا تُضمَّن العقدة في ملف الإعداد المدمج (وإذا كانت موجودة بالفعل، فتُحذَف).
على سبيل المثال، إذا كان لديك ملفا الإعداد التاليان:
config.xml
و
config.d/other_config.xml
سيكون ملف التهيئة الناتج بعد الدمج كما يلي:

الاستبدال باستخدام متغيرات البيئة وعُقد ZooKeeper

لتحديد أن قيمة أحد العناصر يجب أن تُستبدل بقيمة متغير بيئة، يمكنك استخدام السمة from_env. على سبيل المثال، مع متغير البيئة $MAX_QUERY_SIZE = 150000:
سيكون التكوين الناتج كما يلي:
يمكن فعل الأمر نفسه باستخدام from_zk (عقدة ZooKeeper):
لينتج عن ذلك الإعداد التالي:

القيم الافتراضية

قد يحتوي عنصر يحمل السمة from_env أو from_zk أيضًا على السمة replace="1" (ويجب أن تظهر الأخيرة قبل from_env/from_zk). في هذه الحالة، يمكن للعنصر أيضًا تحديد قيمة افتراضية. تكون قيمة العنصر هي قيمة متغير البيئة أو عقدة ZooKeeper إذا كانت معيّنة، وإلا فتكون القيمة الافتراضية. يتكرر المثال السابق، ولكن بافتراض أن MAX_QUERY_SIZE غير معيّن:
لينتج عن ذلك الإعداد التالي:

الاستبدال بمحتوى الملف

يمكن أيضًا استبدال أجزاء من التهيئة بمحتويات الملفات. ويمكن تنفيذ ذلك بطريقتين:
  • استبدال القيم: إذا كان العنصر يحتوي على السمة incl، فستُستبدل قيمته بمحتوى الملف المشار إليه. يكون المسار إلى الملف الذي يحتوي على قيم الاستبدال هو /etc/metrika.xml افتراضيًا. ويمكن تغيير ذلك في العنصر include_from ضمن تهيئة الخادم. وتُحدَّد قيم الاستبدال في عناصر /clickhouse/substitution_name داخل هذا الملف. وإذا لم تكن قيمة الاستبدال المحددة في incl موجودة، فسيُسجَّل ذلك في السجل. ولمنع ClickHouse من تسجيل قيم الاستبدال المفقودة، حدِّد السمة optional="true" (على سبيل المثال، إعدادات الماكرو).
  • استبدال العناصر: إذا كنت تريد استبدال العنصر بالكامل بقيمة استبدال، فاستخدم include اسمًا للعنصر. ويمكن الجمع بين اسم العنصر include والسمة from_zk = "/path/to/node". في هذه الحالة، تُستبدل قيمة العنصر بمحتويات عقدة ZooKeeper الموجودة في /path/to/node. وينجح ذلك أيضًا إذا خزّنت شجرة XML فرعية كاملة بوصفها عقدة ZooKeeper، إذ ستُدرج بالكامل في العنصر المصدر.
يظهر مثال على ذلك أدناه:
إذا كنت تريد دمج محتوى الاستبدال مع التهيئة الحالية بدلًا من إلحاقه بها، فيمكنك استخدام السمة 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 لديك، فهناك بديلان: إما ضبط أذونات الملف المُعالَج مسبقًا على 600، أو استخدام السمة hide_in_preprocessed. على سبيل المثال:

إعدادات المستخدم

يمكن لملف config.xml تحديد إعداد منفصل يتضمن إعدادات المستخدم وملفات التعريف والحصص. ويُحدَّد المسار النسبي لهذا الإعداد في العنصر users_config. وتكون قيمته افتراضيًا users.xml. وإذا لم يتم تحديد users_config، فستُحدَّد إعدادات المستخدم وملفات التعريف والحصص مباشرةً في config.xml. يمكن تقسيم إعدادات المستخدم إلى ملفات منفصلة، على غرار config.xml وconfig.d/. ويُحدَّد اسم الدليل على أنه قيمة الإعداد users_config بعد حذف اللاحقة .xml وإضافة .d. ويُستخدَم الدليل 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 التي استُخدمت عند تنفيذ عمليات الاستبدال والتجاوزات، ويعيد تحميل إعدادات المستخدمين والعناقيد أثناء التشغيل. وهذا يعني أنه يمكنك تعديل العنقود والمستخدمين وإعداداتهم من دون إعادة تشغيل الخادم.
آخر تعديل في ٢٥ يونيو ٢٠٢٦