ملفات الإعداد وملفات التعريف للإعدادات المستندة إلى XML غير مدعومة في ClickHouse Cloud. لذلك، في ClickHouse Cloud، لن تجد ملف
config.xml. وبدلًا من ذلك، يجب استخدام أوامر SQL لإدارة الإعدادات من خلال ملفات تعريف الإعدادات.للمزيد من التفاصيل، راجع “تهيئة الإعدادات”/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:
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
config.yaml.example.
توجد بعض الاختلافات بين تنسيقي YAML وXML من حيث إعدادات ClickHouse.
فيما يلي نصائح لكتابة الإعدادات بصيغة YAML.
يُمثَّل وسم XML ذو القيمة النصية بزوج مفتاح-قيمة في YAML
@. لاحظ أن الرمز @ محجوز وفقًا لمعيار YAML، لذا يجب وضعه بين علامتَي اقتباس مزدوجتين:
#text:
تفاصيل التنفيذ
file-preprocessed.xml عند بدء التشغيل. تحتوي هذه الملفات على جميع عمليات الاستبدال والتجاوزات المكتملة، وهي مخصّصة للاطلاع فقط. إذا استُخدمت عمليات استبدال ZooKeeper في ملفات الإعدادات، ولكن ZooKeeper لم يكن متاحًا عند بدء تشغيل الخادم، فإن الخادم يحمّل الإعدادات من الملف المُعالَج مسبقًا.
يتتبّع الخادم التغييرات في ملفات الإعدادات، وكذلك الملفات وعُقد ZooKeeper التي استُخدمت عند تنفيذ عمليات الاستبدال والتجاوزات، ويعيد تحميل إعدادات المستخدمين والعناقيد أثناء التشغيل. وهذا يعني أنه يمكنك تعديل العنقود والمستخدمين وإعداداتهم من دون إعادة تشغيل الخادم.