1. โครงสร้างระบบ
รูปที่ 2-1 ตัวอย่างการเชื่อมต่อระบบ
2. ขั้นตอนการติดตั้งซอฟต์แวร์
2.1 สำรองไดเรกทอรี /usr/lib64/mysql ไว้ก่อนเพราะเป็นส่วนที่ถูกคอนฟิกให้ติดต่อกับ php ไว้
2.2 ถ้าติดตั้ง MySQL ตัวปรกติที่มากับลีนุกซ์ ให้ถอนตัวเก่าออกด้วยคำสั่งดังนี้
# rpm -e --allmatches --nodeps mysql
# rpm -e --allmatches --nodeps mysql-devel
# rpm -e --allmatches --nodeps mysql-server
2.3 ติดตั้งไฟล์ไฟล์ mysql-cluster ทั้งหมด
# rpm -Uvh *
3. ลำดับการคอนฟิก
3.1 สร้างไฟล์ /etc/my.cnf ที่ Data Nodes, SQL nodes
# Options for mysqld process:
[mysqld]
ndbcluster # run NDB storage engine
ndb-connectstring=mgm1 # location of management server
# Options for ndbd process:
[mysql_cluster]
ndb-connectstring=mgm1
3.2 สร้างไฟล์ /var/lib/mysql-cluster/config.ini ไว้ที่ MGM node
# Management process options:
[ndb_mgmd default]
DataDir=/var/lib/mysql-cluster # Directory for management node log files
[ndb_mgmd]
NodeId=99
hostname=mgm1 # Hostname or IP address of management node
# Options affecting ndbd processes on all data nodes:
[ndbd default]
DataMemory=64M # How much memory to allocate for data storage
IndexMemory=8M # How much memory to allocate for index storage
DataDir=/usr/local/mysql/data # Directory for this data node's data files
NoOfReplicas=2 # Number of replicas (Data Copies)
MaxNoOfExecutionThreads=2 # Max thread for Execution (Depend on CPU Cores)
[ndbd]
NodeId=1 # (one [ndbd] section per data node)
hostname=ndb1 # Hostname or IP address
[ndbd]
NodeId=2
hostname=ndb2
# SQL node options:
[mysqld]
NodeId=101
hostname=client1
ตัวแปร DataMemory และ IndexMemory จำเป็นที่จะต้องกำหนดให้สอดคล้องกับหน่วยความจำของเครื่องในที่นี้กำหนดไว้เพียง 64M และ 8M ตามลำดับ เพียงเพื่อการทดลองศึกษา ไม่เหมาะกับการใช้จริง โปรดอ่านรายละเอียดเกี่ยวกับเรื่องในเนื้อหาบทที่ 2
4. การรันโปรแกรมเพื่อเริ่มต้นทำงาน
4.1 ที่ mgm node run
shell> ndb_mgmd -f /var/lib/mysql-cluster/config.ini
4.2 ที่ Data node (ndb)
shell> mkdir -p /usr/local/mysql/data
shell> chown -R mysql:mysql /usr/local/mysql
แล้วก็ run daemon เพื่อให้โปรแกรมทำงาน
shell> ndbmtd
4.3 ที่ SQL nodes (client) สั่ง
shell> service mysql start
5. ใช้งานโปรแกรม Management Client เพื่อดูสถานะการทำงานของระบบ
shell> ndb_mgm
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 4 node(s)
id=1 @ndb1 (mysql-5.1.34 ndb-7.0.6, Nodegroup: 0, Master)
id=2 @ndb2 (mysql-5.1.34 ndb-7.0.6, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=99 @mgm1 (mysql-5.1.34 ndb-7.0.6)
[mysqld(API)] 2 node(s)
id=101 @client1 (mysql-5.1.34 ndb-7.0.6)
6. สร้างตารางบน NDB การสร้างตารางบน MySQL นั้นแตกต่างจากปรกติ เพียงการระบุว่าจะใช้ engine เป็น ndbcluster เท่านั้น ดังตัวอย่างต่อไปนี้
create table member (
mem_id int(3) primary key auto_increment,
mem_name varchar(100) not null,
mem_email varchar(50) not null,
index (mem_name)
) ENGINE NDBCLUSTER;
ในกรณีที่มีตารางสร้างอยู่ก่อนแล้วโดยใช้ Storage engine ตัวอื่นแล้วจะเปลี่ยนมาใช้ NDB ให้ใช้คำสั่ง ALTER ดังตัวอย่างต่อไปนี้
ALTER TABLE tbl_name ENGINE=NDBCLUSTER;
สร้างฐานข้อมูล sakila และตารางด้วย sql script ใน MySQL Cluster
shell> tar -xvf sakila-db.tar.gz
shell>cd sakila-db
shell>vi sakila-schema.sql (แก้ engine เป็น NDBCLUSTER)
shell>mysql -u root
mysql>source sakila-schema.sql
7. ทดลอง insert ข้อมูล
mysql>source sakila-data.sql
8. ให้เปิดการทำงานของ mysqld ที่ MGM node เข้าไปเรียกดูข้อมูลจากตาราง customer
9. ทดลอง shutdown เครื่องdata node และดูข้อมูลว่ายังอยู่หรือไม่