MySQL Cluster集群的低級安排教程。本站提示廣大學習愛好者:(MySQL Cluster集群的低級安排教程)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL Cluster集群的低級安排教程正文
Mysql Cluster概述
MySql Cluster最明顯的長處就是高可用性,高及時性,高冗余,擴大性強。
它許可在無同享的體系中安排"內存中"數據庫的Cluster.經由過程無同享系統構造,體系可以或許應用便宜的硬件.另外,因為每一個組件有本身的內存和磁盤,所以不存在單點毛病.
它由一組盤算機組成,每台盤算機上均運轉者多種過程,包含mysql辦事器,NDB cluster的數據節點,治理辦事啟,和專門的數據拜訪法式
一切的這些節點組成一個完全的mysql集群系統.數據保留在"NDB存儲辦事器"的存儲引擎中,表(構造)則保留在"mysql辦事器"中.運用法式經由過程"mysql辦事器"拜訪這些數據表,集群治理辦事器經由過程治理對象(ndb_mgmd)來治理"NDB存儲辦事器".
根本概念
"NDB"是一種"內存中"的存儲引擎,它具有可用性高和數據分歧性好的特色.上面引見mysql cluster 節點時,它表現過程.在單台盤算機上可以有隨意率性數量的節點.
治理節點(MGM):這類節點的感化是治理mysql cluster內的其他節點,如設置裝備擺設文件和cluster 日記,啟動並停滯節點,運轉備份等.cluster中的每一個節點從治理辦事器上檢索設置裝備擺設數據,並要求治理辦事器地點地位的方法.當數據節點內湧現新的事宜時,節點將關於這類事宜的信息傳輸到治理辦事器上,然後,又將這類信息寫入cluster日記。因為這類節點擔任治理其他節點的設置裝備擺設,所以應在啟動其他節點之前起首啟動這類節點.MGM節點是用敕令"ndb_mgmd"來啟動
數據節點(NDB):這類節點用於保留cluster的數據.數據節點的數量與正本的數量相干,是片斷的倍數.假定有2個正本,每一個正本有2個片斷,那末就有4個數據節點.不外沒有需要設置多個正本.數據節點是用敕令"ndbd"來啟動的.
SQL節點:這是用來拜訪cluster數據的節點.關於MYSQL cluster來講,客戶端節點是應用NDB cluster存儲引擎的傳統Mysql辦事器.平日,sql節點應用將"ndbcluster"添加到"my.cnf"後應用"mysqld" 啟動
另外,可以有隨意率性數量的cluster客戶端過程或應當法式.它們分為兩品種型,即尺度mysql客戶端和治理客戶端.
尺度mysql客戶端:可以或許從php,perl,c,c++,java,python,ruby等編寫的現有mysql運用法式上拜訪mysql cluster
治理客戶端:這類客戶端與治理辦事器相連,並供給了啟動和停滯節點,啟動和停滯新聞跟蹤,顯示節點版本和狀況,啟動和停滯備份等敕令.
以下是mysql cluster 架構表示圖:
因為Mysql Cluster采取的是TCP/IP方法銜接,而且節點之間的數據傳輸沒有加密,最初應用零丁的子網裡.
上面來實行安排
為了便利 這裡我把治理節點,數據節點,sql節點放在一台機械上.
治理節點1 10.1.6.205
數據節點1 10.1.6.203
數據節點2 10.1.6.205
sql節點1 10.1.6.203
sql節點2 10.1.6.205
1.裝置(這裡裝置7.2.6版本)
下載mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz 二進制包(外面包括ndb,mysql)
[email protected]:~# tar -C /usr/local -xzvf mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz [email protected]:/usr/local# ln -s /usr/local/mysql-cluster-gpl-7.2.8-linux2.6-i686 /usr/local/mysql [email protected]:/usr/local# cd mysql [email protected]:/usr/local/mysql# scripts/mysql_install_db --user=mysql [email protected]:/usr/local/mysql# chown -R mysql:mysql /usr/local/mysql 同理10.1.6.203
2.設置裝備擺設SQL節點和存儲NDB節點
[email protected]:/usr/local/mysql# vim /etc/my.cnf [mysqld] basedir=/usr/local/mysql/ datadir=/usr/local/mysql/data/ user=mysql port=3306 socket=/tmp/mysql.sock ndbcluster max_connect_errors=10000 ndb-connectstring=10.1.6.205 connect_timeout = 300 [mysql_cluster] ndb-connectstring=10.1.6.205
同理10.1.6.203
3.設置裝備擺設治理節點
[email protected]:/usr/local/mysql# vim /opt/cluster/config.ini [ndbd default] NoOfReplicas=2 DataMemory=80M #分派data storage應用的內存 每一個ndb占用 IndexMemory=18M #分派index storage應用的內存 每一個ndb占用 [tcp default] portnumber=2205 #ndb監聽端口 #設置治理節點 [ndb_mgmd] NodeId=1 hostname=10.1.6.205 datadir=/opt/cluster #在MGM上保留日記的目次 #設置存儲節點NDB1 [ndbd] NodeId=2 hostname=10.1.6.203 datadir=/usr/local/mysql/data #設置存儲節點NDB2 [ndbd] NodeId=3 hostname=10.1.6.205 datadir=/usr/local/mysql/data #設置SQL節點1 [mysqld] NodeId=4 hostname=10.1.6.203 #設置SQL節點2 [mysqld] NodeId=5 hostname=10.1.6.205 [mysqld] #運轉隨意率性ip銜接 [mysqld]
4.啟動mysql cluster
1)先啟動治理節點辦事器.2)啟動NDB存儲節點辦事器.3)啟動SQL節點辦事器.
1)履行啟動MGM節點過程
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/ndb_mgmd -f /opt/cluster/config.ini MySQL Cluster Management Server mysql-5.5.22 ndb-7.2.6
必需用參數-f或--config-file告知ndb_mgm設置裝備擺設文件config.ini文件地點的地位.
2)在2台存儲節點辦事器上,假如是第一次啟動NDB過程的話,必需先履行以下敕令:
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/ndbd --initial 2013-08-28 23:40:36 [ndbd] INFO -- Angel connected to '10.1.6.205:1186' 2013-08-28 23:40:36 [ndbd] INFO -- Angel allocated nodeid: 2
留意:僅在初次啟動NDB時,或許在備份/恢復或設置裝備擺設文件產生變更且重啟NDB時才應用-initial參數.由於該參數會使節點刪除由晚期NDB實例創立的,用於恢復的任何文件,包含用於恢復的日記文件.
假如不是第一次啟動,用以下敕令
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/ndbd
3)啟動SQL節點辦事器
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/mysqld_safe /etc/my.cnf &
5.檢查各個節點情形
[email protected]:/usr/local/mysql# /usr/local/mysql/bin/ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @10.1.6.203 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0, Master) id=3 @10.1.6.205 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @10.1.6.205 (mysql-5.5.22 ndb-7.2.6) [mysqld(API)] 4 node(s) id=4 @10.1.6.203 (mysql-5.5.22 ndb-7.2.6) id=5 @10.1.6.205 (mysql-5.5.22 ndb-7.2.6) id=6 (not connected, accepting connect from any host) id=7 (not connected, accepting connect from any host) ndb_mgm>
6.測試
留意:與沒有應用Cluster的Mysql比擬,在mysql cluster內操作數據的方法沒有太年夜的差別.操作時留意
1)表必需用engine=NDB或engine=NDBCLUSTER選項創立
2)每一個NDB表必需有一個主鍵.假如在創立表時用戶不決義主鍵,NDB Cluster存儲引擎會主動生成隱含的主鍵.
該隱含鍵也將占用空間,就像任何其他的表索引一樣.因為沒有足夠的內存來包容這些主動創立的鍵,所以很輕易湧現成績.
在203 sql節點1上創立表
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/mysql -uroot -p mysql> use test; mysql> create table dave (num int(10)) engine=ndb; mysql> show create table dave\G; *************************** 1. row *************************** Table: dave Create Table: CREATE TABLE `dave` ( `num` int(10) DEFAULT NULL ) ENGINE=ndbcluster DEFAULT CHARSET=latin1 1 row in set (0.00 sec) mysql> insert into dave -> values -> (100); Query OK, 1 row affected (0.01 sec) mysql> select * from dave; +------+ | num | +------+ | 100 | +------+
然後在205 sql節點2上檢查該表
[email protected]:/usr/local/mysql# /usr/local/mysql/bin/mysql -uroot -p mysql> use test mysql> select * from dave; +------+ | num | +------+ | 100 | +------+
測試OK
存眷一下表
mysql> select * from ndbinfo.memoryusage; +---------+--------------+--------+------------+----------+-------------+ | node_id | memory_type | used | used_pages | total | total_pages | +---------+--------------+--------+------------+----------+-------------+ | 2 | Data memory | 851968 | 26 | 83886080 | 2560 | | 2 | Index memory | 212992 | 26 | 19136512 | 2336 | | 3 | Data memory | 851968 | 26 | 83886080 | 2560 | | 3 | Index memory | 212992 | 26 | 19136512 | 2336 |
留意:應用量寫滿會拜訪不了,這時候須要調劑設置裝備擺設DataMemory,IndexMemory參數.各設置裝備擺設文件都需調劑重啟失效.
7.封閉cluster
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/ndb_mgm -e shutdown Connected to Management Server at: 10.1.6.205:1186 3 NDB Cluster node(s) have shutdown. Disconnecting to allow management server to shutdown.
再封閉SQL節點mysqld辦事
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/mysqladmin -uroot -p shutdown Enter password: 130829 02:19:57 mysqld_safe mysqld from pid file /usr/local/mysql/data//debian.pid ended [1]+ Done /usr/local/mysql/bin/mysqld_safe /etc/my.cnf
以上就是mysql cluster初步安排, 以後會寫haproxy+keepalive 雙機高可用.