لماذا يحدث هذا
عند وقوع هذا الخطأ، يظهر أحد الجداول على أنه للقراءة فقط، وتوضح رسالة الخطأ وجود أجزاء متداخلة.
يمكنك رؤية الخطأ في السجلات أو من خلال
SELECT *
FROM system.replicas
WHERE is_readonly = 1تكون رسالة الخطأ على النحو التالي:
Code: 49. DB::Exception: Part XXXXX intersects previous part YYYYY. It is a bug or a result of manual intervention in the ZooKeeper data. (LOGICAL_ERROR) (version 21.12.4.1 (official build))سبب الخطأ
قد ينجم هذا الخطأ عن حالة تسابق بين mergeSelectingTask وإعادة تهيئة قائمة الانتظار.
الحل
نفِّذ الاستعلامات التالية على جميع النسخ المتماثلة:
DETACH TABLE table_name; -- Required for DROP REPLICA
SYSTEM DROP REPLICA 'replica_name' FROM ZKPATH '/table_path_in_zk/'; -- It will remove everything from /table_path_in_zk
ATTACH TABLE table_name; -- Table will be in readonly mode, because there is no metadata in ZKثم نفّذ ما يلي على جميع النُسخ المتماثلة:
SYSTEM RESTORE REPLICA table_name; -- It will detach all partitions, re-create metadata in ZK (like it's new empty table), and then attach all partitions back
SYSTEM SYNC REPLICA table_name; -- Wait for replicas to synchronize parts. Also it's recommended to check `system.detached_parts` on all replicas after recovery is finished.موارد إضافية
طلبات الدمج ومسائل GitHub ذات الصلة:
- ClickHouse/ClickHouse#34096
- ClickHouse/ClickHouse#30651
- ClickHouse/ClickHouse#31060
- ClickHouse/ClickHouse#35863
الإصدارات المتأثرة:
ClickHouse v 22.12 والإصدارات السابقة