MySQL Cluster ตั้งแต่ NDB-7.0 เป็นต้นมา สามารถทำการเพิ่ม NDB Nodes เข้าสู่ระบบในขณะที่ระบบกำลังให้บริการอยู่ได้ เป็นอีกหนึ่งความสามารถที่ตอบโจทย์ของการมีอัตราการหยุดชะงักของระบบที่ต่ำ
รูปที่ 1 ระบบที่มี NDB จำนวน 2 เครื่อง
รูปที่ 2 แก้ไขไฟล์ config.ini เพื่อเพิ่มข้อมูลโหนดใหม่
ในการแก้ไขไฟล์ config.ini โปรดอย่าลืมว่าหากเรามีเครื่อง MGM มากกว่าหนึ่งเครื่อง เราต้องสำเนาไฟล์ไปยัง MGM ทุกเครื่องเพื่อให้ทุกเครื่่องใช้ config.ini ที่เหมือนกัน
รูปที่ 3 สั่ง restart โหนด MGM และ NDB เดิมใหม่
การ restart MGM โหนดสามารถสั่งพร้อมๆ กันได้ทุกโหนด
การ restart NDB โหนดให้ทำทีละเครื่องเท่านั้นครับ วิธีการที่ดีในการรีสตาร์ท NDB โหนดคือการเข้าที่ Management Client แล้วสั๋งรีสตาร์ทที่ละโหนด
รูปที่ 4 เริ่มสตาร์ทโหนดใมห่
หลังจากรีสตาร์ทโหนดที่มีอยู่เดิมครบหมดแล้ว ทั้งหมดก็จะทราบแล้วว่าจะมีเครื่องใหม่เพิ่มเข้ามาในระบบ จากนั้นก็สั่งเริ่มการทำงานที่เครื่อง NDB ที่เพิ่มเข้ามาใหม่ ด้วยคำสั่ง
ndbmtd --initial
จากนั้นเมื่อมองเห็นโหนดใหม่ทั้งหมดบน Management Client แล้วจึงสั่งคำสั่งในการสร้างกลุ่ม (Node Group) สมมุติเครื่องที่เพิ่มมาใหม่มี NodeId 3 และ 4 ตามภาพจะสั่งดังต่อไปนี้
create nodegroup 3,4
TIP ตรงจุดนี้ขอให้ตรวจสอบให้มั่นใจว่าเครื่องที่จะเพิ่มเข้าใหม่นั้นได้ config พื้นฐานเรื่อง host file, firewall, selinux ตามแบบฝึกหัดที่ 1 ไว้ทั้งหมดแล้ว รวมถึงติดตั้งซอฟต์แวร์ MySQL Cluster ไว้แล้วด้วย
รูปที่ 5 การ Re-organization ข้อมูลกระจายไปยัง Node Group ใหม่
ข้อมูลที่อยู่เดิมก่อนเพิ่มเครื่องเข้ามานั้นจะไม่ได้กระจายไปยังเครื่องใหม่จนกว่าผู้ใช้จะเป็นผู้สั่งให้กระจายข้อมูลออกไป แต่สำหรับตารางข้อมูลที่เข้ามาใหม่จะใช้พื้นที่ทั้งสองโหนดกรุ๊ปเองโดยอัตโนมัติ ผู้ใช้งานสามารถสั่งกระจายข้อมูลไปยังโหนดกรุีปใหม่ได้ด้วยคำสั่ง
ALTER ONLINE TABLE [TABLE_NAME] REORGANIZE PARTITION;
เช่น การกระจายข้อมูลตาราง Customer ในฐานข้อมูล Sakila
mysql > use sakila;
mysql > ALTER ONLINE TABLE customer REORGANIZE PARTITION;
การสั่งจายข้อมูลทำได้แต่ในระดับตารางเท่านั้น หากมีจำนวนตารางที่มากแนะนำให้ใช้วิธีการเขียนสคริปต์เข้าช่วย