Chinaunix首页 | 论坛 | 博客
  • 博客访问: 119350
  • 博文数量: 27
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 315
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-21 20:41
文章分类

全部博文(27)

文章存档

2011年(1)

2010年(21)

2009年(5)

我的朋友

分类: Mysql/postgreSQL

2010-04-09 22:28:19

1.準備三台主機,每一台的規格盡量一致,如i386,RAM大小,作業系統(這邊用CentOS release 5.2)

2.這三台主機網路要互通 , 三台主機我們命名為 mysqlA,mysqlB,mysqlC ,都在內網 , 都有內網ip

3.把主機的iptables 先關掉(#service iptables stop)

4. 各自ip為

mysqlA:192.168.0.11 (這台當作管理端,可以管理這個Cluster上的各個node)
mysqlB:192.168.0.12
mysqlC:192.168.0.13

5.node有三種

Management node:用來控制或監看三台主機的狀況
Storage node : 這個node最重要了, 是用來存取資料的,管理者通常會費比較多心思在上面
SQL node :它們負責跟application作連接,執行sql指令,負責跟Storage node連接.

7.規劃哪一台主機要安裝哪一種node,本範例的分配如下

mysqlA:Management node+Storage node+SQL node
mysqlB:Storage node+SQL node
mysqlC:Storage node+SQL node

共6個nodes(不含Management node)

8.不使用作業系統配給的MySQL,若有預設安裝在裡面,請移除.至MySQL網站下載這些rpm檔

MySQL-Cluster-gpl-management-6.2.15-0.rhel5.i386.rpm (安裝在mysqlA)
MySQL-Cluster-gpl-extra-6.2.15-0.rhel5.i386.rpm (選擇性的,可裝可不裝,我安裝在mysqlA,mysqlB,mysqlC)
MySQL-Cluster-gpl-server-6.2.15-0.rhel5.i386.rpm (安裝在mysqlA,mysqlB,mysqlC)
MySQL-Cluster-gpl-client-6.2.15-0.rhel5.i386.rpm (安裝在mysqlA,mysqlB,mysqlC)
MySQL-Cluster-gpl-storage-6.2.15-0.rhel5.i386.rpm (安裝在mysqlA,mysqlB,mysqlC)
MySQL-Cluster-gpl-devel-6.2.15-0.rhel5.i386.rpm (安裝在mysqlA,mysqlB,mysqlC)
MySQL-Cluster-gpl-tools-6.2.15-0.rhel5.i386.rpm (安裝在mysqlA,mysqlB,mysqlC)
MySQL-Cluster-gpl-shared-6.2.15-0.rhel5.i386.rpm (選擇性的,可裝可不裝,安裝在mysqlA,mysqlB,mysqlC)

9.以上套件安裝完成後,請在mysqlA 上面編寫一個檔案,如下:
#mkdir -p /var/lib/mysql-cluster
#vi /var/lib/mysql-cluster/config.ini ,寫入以下設定項目
[NDBD DEFAULT]
NoOfReplicas=3
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Managment Server
[NDB_MGMD]
HostName=192.168.1.11
#Storage Engines
[NDBD]
HostName=192.168.1.11
DataDir= /var/lib/mysql-cluster
DataMemory=1024MB
IndexMemory=128MB
[NDBD]
HostName=192.168.1.12
DataDir= /var/lib/mysql-cluster
DataMemory=1024MB
IndexMemory=128MB
[NDBD]
HostName=192.168.1.13
DataDir=/var/lib/mysql-cluster
DataMemory=1024MB
IndexMemory=128MB
# 2 MySQL Clients
# I personally leave this blank to allow rapid changes of the mysql clients;
# you can enter the hostnames of the above two servers here. I suggest you dont.
[MYSQLD]
HostName=192.168.1.11
[MYSQLD]
HostName=192.168.1.12
[MYSQLD]
HostName=192.168.1.13

10. 請在mysqlA,mysqlB,mysqlC 的/etc/ 下編寫my.cnf檔 :

mysqlA,mysqlB,mysqlC 都一樣如下:
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.11
[mysql_cluster]
ndb-connectstring=192.168.0.11

11.請至每一台,啟動 mysql server,並確定每一台登入mysql沒問題

#service mysql start
#mysql

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15644
Server version: 5.1.23-ndb-6.2.15-cluster-gpl MySQL Cluster Server (GPL)

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

12.至mysqlA 啟動 management node,storage node,SQL node
#cd /var/lib/mysql-cluster
#/usr/sbin/ndb_mgmd ./config.ini
#/usr/sbin/ndbd –initial (DB裡面有資料後 千萬不能這樣重啟,資料會被清光從零開始 這是第一次啟動時用的)
#service mysql restart
13.請至 mysqlB 跟mysqlC 啟動 storage node,SQL node

#cd /var/lib/mysql-cluster
#/usr/sbin/ndbd –initial
#service mysql restart

14.至mysqlA 查看各個node的狀況,如下

#ndb_mgm
– NDB Cluster — Management Client –
ndb_mgm> show
Connected to Management Server at: 127.0.0.1:1186
Cluster Configuration
———————
[ndbd(NDB)] 3 node(s)
id=2 @192.168.1.11 (mysql-5.1.23 ndb-6.2.15, Nodegroup: 0, Master)
id=3 @192.168.1.12 (mysql-5.1.23 ndb-6.2.15, Nodegroup: 0)
id=4 @192.168.1.13 (mysql-5.1.23 ndb-6.2.15, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.11 (mysql-5.1.23 ndb-6.2.15)

[mysqld(API)] 3 node(s)
id=5 @192.168.1.11 (mysql-5.1.23 ndb-6.2.15)
id=6 @192.168.1.12 (mysql-5.1.23 ndb-6.2.15)
id=7 @192.168.1.13 (mysql-5.1.23 ndb-6.2.15)

看到這個,就算成功一半了.

14.測試建立一個db到任意一台主機,如mysqlA

#mysql
mysql>create database haha;
Query OK, 1 row affected (0.15 sec)
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| haha |
| mysql |
| test |
+——————–+
5 rows in set (0.00 sec)

再到其他台上查看有沒有haha這個資料庫.有的話就成功了.在任何一台刪除haha,其他台也會跟著刪.

15.注意,建立資料表時,一定要用ndb_cluster這種資料型態,才有作用,如果想要import data進來

要先確定資料表的型態,不然它不會傳播到其他台.NDB(Network Database)

16.注意安裝Storage node的主機,RAM 要夠大,本例使用的主機都有2G的RAM,計算每個Storage node主機會用到的

RAM: (SizeofDatabases x NumberOfReplicas x 1.1) / NumberOfDataNodes

17.重啟整個ndbd的方式

到所屬的機器 
#ps axu | grep ndbd (抓出 process ID,通常有兩個ndbd)
#kill -9 ID1 ID2 (強制刪除這兩個程序)
#/usr/sbin/ndbd (啟動ndbd)

阅读(1441) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~