程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL Cluster集群的低級安排教程

MySQL Cluster集群的低級安排教程

編輯:MySQL綜合教程

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 架構表示圖:

2016228172415617.png (583×372)

因為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 雙機高可用.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved