إنشاء قاعدة بيانات
zoo_path— مسار ZooKeeper. يشير مسار ZooKeeper نفسه إلى قاعدة البيانات نفسها.shard_name— اسم الـ shard. تُجمَّع نُسخ قاعدة البيانات المتماثلة ضمن shards حسبshard_name.replica_name— اسم الـ نسخة متماثلة. يجب أن تكون أسماء الـ النسخ المتماثلة مختلفة بين جميع النسخ المتماثلة التابعة للـ shard نفسه.
zoo_path يحتوي على الماكرو {uuid}، فيلزم تحديد UUID صريح أو إضافة ON CLUSTER إلى تعليمة CREATE لضمان أن تستخدم جميع الـ النسخ المتماثلة قيمة UUID نفسها لقاعدة البيانات هذه.
بالنسبة إلى جداول ReplicatedMergeTree، إذا لم يتم توفير أي arguments، فستُستخدم arguments الافتراضية التالية: /clickhouse/tables/{uuid}/{shard} و {replica}. ويمكن تغييرها في server settings default_replica_path و default_replica_name. ويُوسَّع الماكرو {uuid} إلى uuid الخاص بالجدول، بينما يُوسَّع {shard} و {replica} إلى القيم الموجودة في config الخادم، وليس إلى arguments الخاصة بمحرك قاعدة البيانات. ولكن في المستقبل، سيكون من الممكن استخدام shard_name و replica_name لقاعدة بيانات Replicated.
كما أن auxiliary ZooKeeper عنقود مدعوم أيضًا لتخزين البيانات الوصفية الخاصة بقاعدة بيانات replicated بدلًا من استخدام ZooKeeper عنقود الافتراضي. ويمكن استخدام SQL لإنشاء قاعدة البيانات replicated باستخدام auxiliary ZooKeeper عنقود كما يلي:
تفاصيل وتوصيات
Replicated بطريقة مشابهة لاستعلامات ON CLUSTER، ولكن مع اختلافات طفيفة.
أولًا، يحاول طلب DDL التنفيذ على العقدة البادئة (المضيف الذي استقبل الطلب أصلًا من المستخدم). وإذا لم يُنفَّذ الطلب، فسيتلقى المستخدم خطأً فورًا، ولن تحاول المضيفات الأخرى تنفيذه. أما إذا اكتمل الطلب بنجاح على العقدة البادئة، فستعيد جميع المضيفات الأخرى المحاولة تلقائيًا حتى تُكمله. وستحاول العقدة البادئة انتظار اكتمال الاستعلام على المضيفات الأخرى (لمدة لا تتجاوز distributed_ddl_task_timeout)، ثم تُعيد جدولًا يتضمن حالات تنفيذ الاستعلام على كل مضيف.
يُنظَّم السلوك في حالة الأخطاء بواسطة الإعداد distributed_ddl_output_mode، وبالنسبة إلى قاعدة بيانات Replicated فمن الأفضل ضبطه على null_status_on_timeout — أي إذا لم تتمكن بعض المضيفات من تنفيذ الطلب خلال distributed_ddl_task_timeout، فلا يُطرَح استثناء، بل تُعرَض لها الحالة NULL في الجدول.
يحتوي جدول النظام system.clusters على عنقود يحمل اسمًا مطابقًا لاسم قاعدة بيانات Replicated، وتتكوّن من جميع النسخ المتماثلة لقاعدة البيانات. وتُحدَّث هذه العنقود تلقائيًا عند إنشاء النسخ المتماثلة أو حذفها، ويمكن استخدامها مع جداول Distributed.
عند إنشاء نسخة متماثلة جديدة لقاعدة البيانات، تنشئ هذه النسخة الجداول بنفسها. وإذا كانت النسخة المتماثلة غير متاحة لفترة طويلة وتأخرت عن سجل النسخ المتماثل، فإنها تتحقق من البيانات الوصفية المحلية لديها بمقارنتها بالبيانات الوصفية الحالية في ZooKeeper، وتنقل الجداول الزائدة مع بياناتها إلى قاعدة بيانات منفصلة غير مكررة (حتى لا يُحذف أي شيء زائد عن طريق الخطأ)، وتنشئ الجداول المفقودة، وتحدّث أسماء الجداول إذا كانت قد أُعيدت تسميتها. ويتم النسخ المتماثل على مستوى ReplicatedMergeTree، أي إذا لم يكن الجدول نفسه مكررًا، فلن تُنسخ البيانات متماثلًا (إذ إن قاعدة البيانات مسؤولة فقط عن البيانات الوصفية).
استعلامات ALTER TABLE FREEZE|ATTACH|FETCH|DROP|DROP DETACHED|DETACH PARTITION|PART مسموح بها، لكنها لا تُنسخ متماثلًا. سيقوم محرك قاعدة البيانات فقط بإضافة partition/part إلى النسخة المتماثلة الحالية أو جلبه أو إزالته منها. ومع ذلك، إذا كان الجدول نفسه يستخدم محرك جدول Replicated، فسيتم نسخ البيانات متماثلًا بعد استخدام ATTACH.
إذا كنت تحتاج فقط إلى تهيئة عنقود من دون الحفاظ على النسخ المتماثل للجداول، فارجع إلى ميزة Cluster Discovery.
مثال استخدام
{uuid} في zoo_path:
الإعدادات
يمكن تجاوز القيم الافتراضية في ملف الإعدادات