الانتقال إلى المحتوى الرئيسي

نظرة عامة على ترقية ClickHouse

تتضمن هذه الوثيقة:
  • إرشادات عامة
  • خطة موصى بها
  • تفاصيل ترقية الملفات التنفيذية على أنظمتك

إرشادات عامة

من المفترض أن تساعدك هذه الملاحظات في التخطيط وفهم الأسباب وراء التوصيات التي سنعرضها لاحقًا في هذه الوثيقة.

رقِّ خادم ClickHouse بشكل منفصل عن ClickHouse Keeper أو ZooKeeper

ما لم تكن هناك حاجة إلى إصلاح أمني في ClickHouse Keeper أو Apache ZooKeeper، فلا حاجة إلى ترقية Keeper عند ترقية خادم ClickHouse. يتطلب نجاح عملية الترقية استقرار Keeper، لذا أكمل ترقيات خادم ClickHouse قبل التفكير في ترقية Keeper.

ينبغي اعتماد الترقيات إلى الإصدارات الثانوية بشكل متكرر

يوصى بشدة بالترقية دائمًا إلى أحدث إصدار ثانوي فور صدوره. لا تتضمن الإصدارات الثانوية تغييرات جذرية غير متوافقة، لكنها تتضمن إصلاحات مهمة للأخطاء (وقد تتضمن أيضًا إصلاحات أمنية).

اختبر الميزات التجريبية على خادم ClickHouse منفصل يعمل بالإصدار المستهدف

قد يتعطل توافق الميزات التجريبية في أي وقت وبأي طريقة. إذا كنت تستخدم ميزات تجريبية، فراجع سجلات التغييرات وفكّر في إعداد خادم ClickHouse منفصل مُثبَّت عليه الإصدار المستهدف، ثم اختبر عليه استخدامك لهذه الميزات.

الرجوع إلى إصدار أقدم

إذا قمت بالترقية ثم أدركت أن الإصدار الجديد غير متوافق مع بعض الميزات التي تعتمد عليها، فقد تتمكن من الرجوع إلى إصدار حديث نسبيًا (لم يمضِ على إصداره أكثر من سنة) إذا لم تكن قد بدأت باستخدام أي من الميزات الجديدة. وبمجرد استخدام الميزات الجديدة، لن ينجح الرجوع إلى إصدار أقدم.

إصدارات متعددة من خادم ClickHouse داخل عنقود

نبذل جهدًا للحفاظ على نافذة توافق تمتد لسنة واحدة (وتشمل إصدارين من LTS). وهذا يعني أن أي إصدارين ينبغي أن يتمكنا من العمل معًا داخل عنقود إذا كان الفارق بينهما أقل من سنة واحدة (أو إذا كان يفصل بينهما أقل من إصدارين من LTS). ومع ذلك، يُوصى بترقية جميع أعضاء العنقود إلى الإصدار نفسه في أسرع وقت ممكن، إذ قد تظهر بعض المشكلات الطفيفة (مثل تباطؤ الاستعلامات الموزعة، وظهور أخطاء قابلة لإعادة المحاولة في بعض العمليات الخلفية في ReplicatedMergeTree، وما إلى ذلك). نحن لا نوصي مطلقًا بتشغيل إصدارات مختلفة داخل العنقود نفسه عندما يتجاوز الفارق بين تواريخ الإصدار سنة واحدة. ومع أننا لا نتوقع فقدانًا للبيانات، فقد يصبح العنقود غير قابل للاستخدام. وتشمل المشكلات التي يُتوقع حدوثها إذا كان الفارق بين الإصدارات يزيد على سنة واحدة ما يلي:
  • قد لا يعمل العنقود
  • قد تفشل بعض الاستعلامات (أو حتى جميعها) مع أخطاء عشوائية
  • قد تظهر أخطاء/تحذيرات عشوائية في السجلات
  • قد يتعذر الرجوع إلى إصدار أقدم

الترقيات التدريجية

إذا كان الفرق بين الإصدار الحالي والإصدار المستهدف يزيد على سنة واحدة، فمن المستحسن حينئذٍ أحد الخيارين التاليين:
  • الترقية مع توقف الخدمة (إيقاف جميع الخوادم، وترقية جميع الخوادم، ثم تشغيل جميع الخوادم).
  • أو الترقية عبر إصدار وسيط (إصدار أحدث من الإصدار الحالي بفارق يقل عن سنة واحدة).
فيما يلي الخطوات الموصى بها لترقية ClickHouse من دون توقّف للخدمة:
  1. تأكد من أن تغييرات الإعدادات ليست في الملف الافتراضي /etc/clickhouse-server/config.xml، بل في /etc/clickhouse-server/config.d/، لأن الملف /etc/clickhouse-server/config.xml قد تتم الكتابة فوقه أثناء الترقية.
  2. راجع سجلات التغييرات بحثًا عن التغييرات غير المتوافقة (بدءًا من الإصدار المستهدف والرجوع إلى الإصدار الذي تستخدمه حاليًا).
  3. نفّذ أي تحديثات واردة ضمن التغييرات غير المتوافقة ويمكن إجراؤها قبل الترقية، وأعد قائمة بالتغييرات التي ستحتاج إلى تنفيذها بعد الترقية.
  4. حدّد نسخة متماثلة واحدة أو أكثر لكل shard لتبقى قيد التشغيل أثناء ترقية بقية النسخ المتماثلة في كل shard.
  5. بالنسبة إلى النسخ المتماثلة التي ستُرقّى، واحدة تلو الأخرى:
  • أوقف خادم ClickHouse
  • رقِّ الخادم إلى الإصدار المستهدف
  • أعد تشغيل خادم ClickHouse
  • انتظر حتى تشير رسائل Keeper إلى أن النظام مستقر
  • انتقل إلى النسخة المتماثلة التالية
  1. تحقّق من وجود أخطاء في سجل Keeper وسجل ClickHouse
  2. رقِّ النسخ المتماثلة التي حدّدتها في الخطوة 4 إلى الإصدار الجديد
  3. ارجع إلى قائمة التغييرات التي جرى تحديدها في الخطوات من 1 إلى 3، ونفّذ التغييرات التي يجب إجراؤها بعد الترقية.
ظهور رسالة الخطأ هذه متوقع عند تشغيل عدة إصدارات من ClickHouse في بيئة replicated. وستتوقف عن رؤيتها عندما تتم ترقية جميع النسخ المتماثلة إلى الإصدار نفسه.
MergeFromLogEntryTask: Code: 40. DB::Exception: Checksums of parts don't match:
hash of uncompressed files doesn't match. (CHECKSUM_DOESNT_MATCH)  Data after merge is not
byte-identical to data on another replicas.

عملية ترقية الملف التنفيذي لخادم ClickHouse

إذا كان ClickHouse مُثبّتًا من حزم deb، فنفّذ الأوامر التالية على الخادم:
$ sudo apt-get update
$ sudo apt-get install clickhouse-client clickhouse-server
$ sudo service clickhouse-server restart
إذا ثبّتَّ ClickHouse باستخدام طريقة غير حِزم deb الموصى بها، فاستخدم طريقة التحديث المناسبة.
يمكنك تحديث عدة خوادم دفعةً واحدة، ما دام لا توجد أي لحظة تكون فيها جميع النسخ المتماثلة ضمن shard واحد غير متصلة.
ترقية إصدار أقدم من ClickHouse إلى إصدار محدد: على سبيل المثال: xx.yy.a.b هو الإصدار المستقر الحالي. ويمكن العثور على أحدث إصدار مستقر هنا
$ sudo apt-get update
$ sudo apt-get install clickhouse-server=xx.yy.a.b clickhouse-client=xx.yy.a.b clickhouse-common-static=xx.yy.a.b
$ sudo service clickhouse-server restart
آخر تعديل في ٢٩ يونيو ٢٠٢٦