[b][u][size=150] :arrow: :arrow: มาทำความรู้จักกับ MySQL Cluster กันค่ะ :mrgreen: :mrgreen: [/size][/u][/b]
[size=150] :roll:[b] ก่อนอื่นต้องมาทำความรู้จักกับ Cluster กันก่อน[/b] :mrgreen: [/size]
:arrow: Cluster เป็นการนำเครื่อง Server มากว่า2 เครื่องมาต่อแบบขนาน ให้ทำงานร่วมกัน ซึ่งจะทำให้การทำงานนั้นมีประสิทธิภาพมากขึ้น และสามารถช่วยป้องกัน server ล่มได้ด้วย สืบเนื่องจาก ตัว server มีการต่อแบบขนานไว้มากกว่า 2 ตัว ถ้าหากตัวใดตัวหนึ่งล่มไป อีกตัวก็ยังสามารถทำงานได้อยู่ แต่ตัว server นั้น จะต้องทำงานบน OS เดียวกัน
[size=150] :arrow: :arrow: [b]ระบบ cluster แบ่งเป็น 2 ชนิด [/b]คือ[/size]
[b]1. ระบบ cluster แบบปิด[/b]
จะซ่อนระบบนั้นไว้ทั้งหมด cluster นั้นจะต่อ ผ่าน Gateway ข้อดีของมันก็คือ จะมีความปลอดภัยที่สูง ส่วนข้อเสียก็คือมันจะไม่สามารถแบ่งส่วนการทำงานหรือบริหารข้อมูลจากภายนอกได้
[b]2. ระบบ cluster แบบเปิด[/b]
ผู้ใช้นั้นสามารถเข้าถึงทุกโหนดได้เลยโดยตรงจากการเชื่อมต่อภายนอก ข้อดีของมันก็คือ ช่วยกับทำงานหรือแบ่งข้อมูลกันทำงานได้ ซึ่งมันเหมาะกับ การให้บริการข้อมูลจำนวนมาก เช่น เว็บหรือ FTP ส่วนข้อเสียนั้น คือ จะมีความปลอดภัยที่ต่ำมากเพราะจะต้อง มาจัดการดูแลเครื่องในระบบทั้งหมด
[attachment=2]1-basic_config.jpg[/attachment]
[size=150][b]ประโยชน์ของระบบ cluster[/b][/size]
1.เพิ่มความทนทานของระบบให้มากขึ้น เพราะเมื่อมีเหตุขัดข้องกับตัว serverที่เป็น master ตัวที่เป็น slave ก็จะทำงานแทน ทำหน้าที่เหมือน Back up ข้อมูลแทนกัน
2.เวลาในการเรียกใช้หรือดูข้อมูลเร็วขึ้น เนื่องจากตัว slave ไปแบ่งส่วนการคิวรีของตัว master ทำให้ไปลดการประมวลผลของตัว master
3.สามารถทำการ back up ข้อมูลได้ขณะที่ตัว master server กำลังทำงานอยู่ โดยการbackup ที่ ตัว slave เป็นตัวเก็บข้อมูล
[size=150][b]ดังนั้น :!: :!: [/b][/size] [b][u][size=150]MySQL Cluster :?: :?: [/size][/u][/b]
:lol: :lol: [b] MySQL Cluster [/b]จึงเป็นเทคโนโลยีที่ช่วยให้การจัดกลุ่มของฐานข้อมูลในหน่วยความจำในระบบเป็นสถาปัตยกรรมที่ช่วยให้ระบบการทำงานร่วมกับฮาร์ดแวร์ที่ราคาไม่แพงมากและมีความต้องการขั้นต่ำที่เฉพาะเจาะจง สำหรับฮาร์ดแวร์หรือซอฟต์แวร์ MySQL Cluster ถูกออกแบบมาให้มีความล้มเหลวน้อยที่สุด,แต่ละองค์ประกอบจะมีหน่วยความจำและดิสก์ของตัวเองและการใช้กลไกการจัดเก็บข้อมูลที่ใช้ร่วมกัน MySQL server จะมีเครื่องมือจัดเก็บในหน่วยความจำ Cluster ที่เรียกว่า NDB (Network DataBase) ซึ่ง NDB หมายถึง การติดตั้งที่มีเฉพาะเครื่องมือสำหรับการเก็บข้อมูลขณะที่ "MySQL Cluster" หมายถึงการรวมกันของเซิร์ฟเวอร์ MySQL กับเครื่องมือเก็บ NDB Cluster ซึ่งจะอธิบายโครงสร้างของ MySQL Cluster ที่มีองค์ประกอบอยู่ 3 ส่วนได้แก่
[attachment=1]Cluster_Scheme_New.jpg[/attachment]
:wink: [b]1. Management Server[/b] เป็นส่วนที่เก็บ Configuration ของระบบ ซึ่งคอนฟิกจะบอกว่าในระบบคลัสเตอร์นั้นประกอบด้วยโหนดอะไรบ้าง เป็นต้น นอกจากนั้นยังทำหน้าที่ให้ข้อมูลของระบบกับโหนดอื่นๆ นับว่าเป็นส่วนสำคัญของระบบ
:wink:[b] 2. Data Node[/b] เป็นโหนดที่ทำหน้าที่เก็บข้อมูล ข้อมูลฐานข้อมูลที่งานในระบบ MySQL Cluster จะถูกจัดเก็บลงบนเครื่อง Data Node นี้ ซึ่งโดยมากจะมีหลายเครื่องเพื่อทำ High Availability จากรูปจะเห็นว่ามี Data Node อยู่ 4 เครื่อง และแบ่งออกเป็น 2 กลุ่ม ตามที่มีจุดไข่ปลาล้อมลอบ ซึ่งทาง MySQL เรียกว่าโหนดกรุ๊ป (Node Group) ข้อมูลที่ถูกจัดเก็บลงมาจะถูกจัดเก็บแบบกระจายกันไปตามโหนดกรุ๊ป โดยเครื่องในโหนดกรุ๊ปจะเก็บข้อมูลเหมือนกัน เพื่อกันการผิดพลาด เวลาที่มีเครื่องหนึ่งเครื่องใดในกลุ่มไม่สามารถให้บริการได้ อีกก็ยังมีอีกเครื่องที่มีข้อมูลเหมือนกันอยู่
:wink: [b]3. MySQL Server [/b](SQL Node หรือ API Node) เป็น MySQL ปรกติที่รับการติดต่อกับโปรแกรมประยุกต์อื่นๆ ตามปรกติ ต่างกันเพียงแค่การจัดเก็บข้อมูลจะถูกจัดเก็บที่ Data Node
:arrow: :arrow: องค์ประกอบทั้งหมดเหล่านี้จะทำงานร่วมกันเพื่อฟอร์ม MySQL Cluster เมื่อข้อมูลถูกจัดเก็บโดย NDB table จะถูกเก็บไว้ใน nodes table ซึ่งจะสามารถเข้าถึงโดยตรงได้จากทุก MySQL server ใน Cluster ดังนั้นในการประยุกต์ใช้บัญชีเงินเดือนการจัดเก็บข้อมูลใน cluster หากการปรับปรุงโปรแกรมเงินเดือนของพนักงาน MySQL sever อื่น ๆ ทั้งหมด ที่มีข้อมูลนี้ก็จะเห็นการเปลี่ยนแปลงนี้ได้ทันที
:arrow: :arrow: อย่างไรก็ตาม MySQL server ที่ไม่ได้เชื่อมต่อกับ MySQL Cluster จะไม่สามารถใช้เครื่องมือเก็บ NDB และไม่สามารถเข้าถึงใด ๆ ในข้อมูลของ MySQL Cluster ได้ข้อมูลที่เก็บไว้ใน nodes ข้อมูล
:arrow: :arrow: สำหรับ MySQL Cluster ; Cluster สามารถจัดการกับความล้มเหลวของ nodes ข้อมูลส่วนบุคคลที่มีผลกระทบอื่นๆจำนวนมากจากการทำธุรกรรม โดยจะยกเลิกการสูญเสียสถานะของธุรกรรม เนื่องจากการทำธุรกรรมที่คาดว่าจะเกิดความล้มเหลวของการทำธุรกรรมนี้ไม่ควรจะเป็นที่มาของปัญหาที่จะเกิดขึ้น nodes ส่วนสามารถหยุดและเริ่มการทำงานใหม่ และจากนั้นสามารถกลับเข้าร่วมระบบ (cluster) ได้
:arrow: :arrow: การสำรองและกู้คืนฐานข้อมูล MySQL Cluster สามารถทำได้โดยใช้ฟังก์ชันการทำงานที่พบใน NDB แต่หากเกิดรหัสข้อผิดพลาดก็จะถูกส่งกลับเมื่อมีการออกคำขอสำรองข้อมูล สาเหตุส่วนใหญ่เป็นหน่วยความจำไม่เพียงพอหรือพื้นที่ว่างในดิสก์เต็ม นอกจากนี้ควรตรวจสอบให้แน่ใจว่ามีพื้นที่ว่างเพียงพอบนพาร์ติชันฮาร์ดไดรฟ์ของการสำรองข้อมูลหรือไม่ NDB ไม่สนับสนุนการทำซ้ำซึ่งสามารถทำให้เกิดปัญหากับกระบวนการฟื้นฟู ถึงแม้ว่าขั้นตอนการสำรองข้อมูลเป็น "hot" คืน MySQL Cluster จากการสำรองข้อมูลไม่ได้เป็น 100% กระบวนการ "ร้อน" เพราะนี่คือความจริงของกระบวนการเรียกคืนการทำธุรกรรมที่ไม่ได้รับการทำซ้ำได้ที่อ่านจากการเรียกคืนข้อมูล ซึ่งหมายความว่าสถานะของข้อมูลที่ไม่สอดคล้องกันในขณะที่ทำการคืนค่าอยู่ในการประมวนผล
[attachment=0]MySQL_Cluster.png[/attachment] :mrgreen: [b][size=150]ข้อดีของระบบ MySQL Cluster[/size][/b] :mrgreen:
- เป็นระบบที่มีสภาพพร้อมใช้งานสูงและเป็นระบบแบบภาระงานสมดุล (High availability and Load balanced)
- เป็นระบบที่รองรับงานต่อหนึ่งหน่วยเวลาในปริมาณมาก (High Throughput)
- ปรับเปลี่ยนขนาดของระบบได้ง่าย (Scalability)
- สามารถใช้ฮาร์ดแวร์ทั่วไปได้ (Can deploy with low cost hardware)
:twisted: [b][size=150]ข้อด้อยของระบบ MySQL Cluster[/size][/b] :evil:
- ใช้เครื่องจำนวนมาก (Need many number of machines)
- การคอนฟิกยุ่งยาก (Difficult in configuration)
- ไม่เหมาะกับงานที่มีการคิวรี่ที่ซับซ้อน เพราะยังทำงานช้ากว่าระบบแบบเครื่องเดี่ยว (Not work with complex query)
- ต้องใช้ทักษะในการติดตั้งและดูแลสูง (Required high technical skill)
:mrgreen: :mrgreen: :mrgreen: :mrgreen: :roll: :roll: :roll: :roll: :roll: :roll:
[b]ขอบคุณบทความจาก:[/b][url=https://sites.google.com/site/kittirak/mysql-cluster/bth-thi-2-rucak-kab-mysql-cluster]รู้จักกับ MySQL Cluster[/url]
[url=http://databasecutter.exteen.com/]Database Cutter[/url]