คุณต้องรันnodetool repairบนทุก ๆ โหนดในคลัสเตอร์หรือไม่คุณเพียงแค่เรียกใช้บนโหนดเดียวและจากที่นั่น Cassandra จะดูแลส่วนที่เหลือหรือไม่
คุณต้องรันnodetool repairบนทุก ๆ โหนดในคลัสเตอร์หรือไม่คุณเพียงแค่เรียกใช้บนโหนดเดียวและจากที่นั่น Cassandra จะดูแลส่วนที่เหลือหรือไม่
คำตอบ:
ในการดูเอกสารฉันมีเวลายากในการค้นหาการอ้างอิงสำหรับเรื่องนี้ แต่คำตอบสั้น ๆ คือ "ใช่" คุณต้องรันnodetool repairบนแต่ละโหนดในคลัสเตอร์ของคุณ ที่ใกล้เคียงที่สุดที่ฉันสามารถหาได้คือเอกสารเกี่ยวกับการซ่อมแซมโหนดซึ่งแนะนำว่าคุณไม่ควรเรียกใช้การซ่อมแซมมากกว่าหนึ่งโหนดในคลัสเตอร์ของคุณในแต่ละครั้ง
คุณยังสามารถรันการซ่อมแซมด้วยการ-prตั้งค่าสถานะซึ่ง จำกัด การดำเนินการซ่อมแซมให้อยู่ในช่วงโทเค็นแรกที่โหนดปัจจุบันรับผิดชอบ สิ่งนี้จะช่วยลดความซ้ำซ้อนของงานเมื่อทำงานบนโหนดที่เหลือ
-prทุก ๆ โหนดมันจะครอบคลุมทั้ง keyspace (s)
-prตั้งค่าสถานะ
ลักษณะการทำงานขึ้นอยู่กับการกำหนดค่าของคุณรุ่นของคาสซานดราที่คุณใช้และวิธีการเรียกใช้คำสั่งการซ่อมแซม
หากคุณเพียงแค่เรียกใช้nodetool repairบนโหนดเดียวในคลัสเตอร์มันจะซ่อมแซมข้อมูลทั้งหมด (ช่วงโทเค็น) ที่โหนดนั้นรับผิดชอบและโหนดอื่น ๆ ที่รับผิดชอบข้อมูลนั้น
ตัวอย่างเช่นหากคุณต้องรันnodetool repairคำสั่งบนโหนดเดียวในคลัสเตอร์ที่กำหนด:
ที่กล่าวมาเป็นไปได้ที่จะกำหนดว่าโฮสต์และดาต้าเซ็นเตอร์ใดทำการซ่อมแซมโดยใช้-hostsและตั้ง-dcค่าสถานะ นอกจากนี้หากคุณใช้-prแฟล็ก (ซึ่งจะเลือกช่วงโทเค็นแรกที่โหนดรับผิดชอบเท่านั้น) คุณจะต้องทำงานnodetool repair -prบนโหนดทั้งหมดในคลัสเตอร์
โปรดจำไว้ว่าอีกหนึ่งธงคือ-incธงซึ่งรวมอยู่ในคาสซานดรา 2.1 ตัวเลือกนี้จะซ่อมแซมข้อมูลใหม่เท่านั้น (ข้อมูลที่ไม่ได้รับการซ่อมแซมก่อนหน้านี้) ระวังเมื่อใช้สิ่งนี้โดยเฉพาะอย่างยิ่งถ้าคุณลบข้อมูลบ่อยครั้ง ( เพิ่มเติมเกี่ยวกับเรื่องนี้ )
สิ่งอื่นที่ต้องจำไว้คือวิธีการซ่อมแซมเริ่มต้นใน Cassandra นั้นอาจแตกต่างกันไป ตั้งแต่ Cassandra 2.1 เมื่อใช้งานnodetool repairจะทำการซ่อมแซมตามลำดับเต็มตามค่าเริ่มต้น คุณจะต้องค้นหาว่าเวอร์ชั่นของคุณทำอะไร
สำหรับการอ่านเพิ่มเติมในหัวข้อ:
ไม่คุณไม่ต้องทำงานบนแต่ละโหนด nodetool repairทำงานบนชุดของโหนดซึ่งจะระบุไว้อย่างชัดเจนในเอกสาร
คุณสามารถ จำกัด โหนดหรือส่วนของข้อมูลที่คุณต้องการเรียกใช้การซ่อมแซม ตัวอย่างเช่นคุณสามารถให้-prตัวเลือกสำหรับช่วงพาร์ทิชันช่วงที่โหนดรับผิดชอบ แต่สิ่งนี้จะต้องทำงานในทั้งคลัสเตอร์ แต่ถ้าคุณเลือก-localแล้วโหนดในศูนย์ข้อมูลท้องถิ่นของโหนดจะได้รับการซ่อมแซม
nodetool repairบนโหนดเดียวนั้นไม่เพียงพอที่จะซ่อมแซมข้อมูลที่จำลองแบบแล้วทั้งหมดในโหนดทั้งหมดในการกำหนดค่าทั้งหมด การรันnodetool repairบนโหนดเดียวจะซ่อมแซมข้อมูลที่จำลองแบบบนโหนดนั้นเท่านั้น (การเพิ่ม-prตัวเลือกจะ จำกัด การซ่อมแซมข้อมูลที่โหนดนี้เป็นแบบจำลองแรก) แต่ถ้าคุณมีข้อมูลในคลัสเตอร์ที่ไม่ได้จำลองแบบบนโหนดนี้คุณต้องรันnodetool repairบนโหนดเพิ่มเติม
-prทุก ๆ โหนดมันจะครอบคลุมทั้ง keyspace หรือไม่?