首先說下MySQL的優缺點
優點
解決單點故障
自動實現數據冗餘
缺點就是維護起來太麻煩。
集羣的條件就是所有的機器上都要安裝MySQL的集羣軟件,我安裝的是MySQL-Cluster-gpl-7.3.5-1.el6.x86_64.rpm-bundle.tar的rpm包,解包之後所有的軟件都要安裝。不是源碼包安裝。如果系統裏面安裝了mysql-server等數據庫服務軟件的要自行卸載掉即可。
MySQL集羣中有三種角色,下面是三種角色以及其的作用
角色
數據節點:ndbd節點 存儲在表裏的數據(表中的記錄)
SQL節點:不存儲數據,供用戶訪問和執行SQL操作
管理節點:用來管理集羣,在主機本機啓動管理進程的時候,指定使用的配置文件
接下來就是重點了。集羣的配置文件。這個配置文件要自己手動建立的
首先是管理節點的主配置文件,這個主配置文件首先要以.ini結尾的文件,我存放的目錄放在/etc/mysql-cluster.ini之中,其就是我的管理節點的配置文件。
格式:
標籤:下面[]中括號內的就是標籤。
[ndbd default] 指定數據節點的公共配置,對所有節點都適用的。
[ndb_mgmd] 指定管理節點的配置
[ndbd] 指定數據節點的配置
[mysqld] 指定SQL節點的配置
注意:此時你有幾個節點就要寫幾次標籤,也就是說如果你有2臺機器是做SQL節點的,就必須定義2個[mysqld]標籤。數據節點亦是如此。下面是我自己的配置。
[ndbd default]
NoOfReplicas=2 一份數據備份幾份,一般情況下和數據節點個數相同
DataMemory=80M 用多來物理內存來保存執行的SQL語句和執行結果
IndexMemory=18M 用多來物理內存來保存執行的索引字段語句和執行結果
[ndb_mgmd]
nodeid=1 (同一個網絡內id號不能重複,必須唯一。一般情況下可以設置成本機ip地址的主機位,但是在RedHat6中,好像nodeid不能超過50的。)
hostname=192.168.1.1 管理主機的ip地址
datadir=/usr/local/cluster/ndbddata管理集羣時收集的集羣信息的存放路徑
(系統內必須存在此目錄,沒有手動建立,權限沒關係)
[ndbd]
nodeid=30
Hostname=192.168.1.30
Datadir=/usr/local/cluster/ndbddata SQL節點存儲數據的路徑
(系統內必須存在此目錄,沒有手動建立,權限沒關係)
[ndbd]
nodeid=40
Hostname=192.168.1.40
Datadir=/usr/local/cluster/ndbddata
[mysqld] 不用指定數據存儲的位置,因爲其只提供mysql服務
nodeId=10
Hostname=192.168.1.10
[mysqld]
nodeId=20
Hostname=192.168.1.20
注:千萬不要忘記上面寫的目錄,等下用到的。我們把主配置文件寫好了,然後就去創建我們的datadir吧。千萬不要忘記。
配置數據節點:
手寫配置文件(所有的數據節點都需要配置,可以複製一份到其他數據節點上去然後修改即可)
其配置文件和mysql-server的配置文件同名,即my.cnf,注意把mysql-server的配置文件mv走或者改名
[mysqld]
datadir=/usr/local/cluster/ndbdata //此目錄必須和管理配置文件中指定的目錄一致,沒有手動建立
ndb-connectstring=192.168.1.1 指向由誰管理我的主機的ip地址
ndbcluster 運行的是什麼存儲引擎
[mysql_cluster]指定的是誰來管理集羣
ndb-connectstring=192.168.1.1 管理集羣的主機
配置sql節點:
編寫配置文件
vim /etc/my.cnf 也是需要手動建立的配置文件
[mysqld]
ndbcluster
default-storage-engin=ndbcluster 指定使用的數據庫存儲引擎
[mysql_cluster]指定的是誰來管理集羣
ndb-connectstring=192.168.1.1
到此,所有集羣的計算機配置完畢,接下來我們就可以啓動服務了。
啓動集羣的順序:
先啓動管理節點的進程
ndb_mgmd -f /管理主配置文件的路徑 ,其使用的是本機的1186端口,在命令行下進行輸入
進入集羣管理
ndb_mgm 在命令行下進行輸入
ndb_mgm>show查看信息
啓動數據節點的數據進程
ndbd
啓動sql節點的數據庫服務
service mysql start和原來啓動數據庫服務器一樣
安全關閉集羣服務
要想關閉 Cluster,可在MGM節點所在的機器上,在Shell中簡單地輸入下述命令:
[ndb_mgmd]root# /usr/local/mysql/ndb_mgm -e shutdown
運行以下命令關閉SQL節點的mysqld服務:
[ndb_mgmd]root# /usr/local/mysql/bin/mysqladmin -uroot shutdown
停止ndbd的時候通過kill -9 進程號來停止
總結:在搭建的過程中,出現了很多的小問題,只要大家細心下就可以避免,比方說我在配置的時候遇到的問題。
第一個問題:管理節點的服務啓動不了
ndb_mgmd -f /etc/mysql-cluster.ini
[root@localhost data]# ndb_mgmd -f /etc/mysql-cluster.ini
MySQL Cluster Management Server mysql-5.6.17 ndb-7.3.5
2014-05-13 03:23:47 [MgmtSrvr] ERROR -- Directory '/usr/local/cluster/ndbdata' specified with DataDir in configuration does not exist.
剛開始我以爲ndbdata是個文件,,目錄只建到cluster,所有就報錯,看了配置文件沒有問題,後來找就發現了ndbdata也是一個目錄。這是一點需要注意的,而且此目錄要和主配置文件中定義的datadir一致。
第二個問題:ndbd啓動不了,報錯的文件就是說和管理節點聯繫不上,後來去看ndbd節點上的配置文件,發現指定誰管理我的集羣的時候少了一個cluster,即正確的是[mysql_cluster]而我寫成了[mysqld],就啓動不了。改正確即可
配置集羣服務器不容易出錯,只要自己夠細心,完全能夠一次性配置成功。之後就是調優的問題了,各位可以依據各自的環境進行調優。