MySQL Cluster叢集的初級部署教程_Mysql

來源:互聯網
上載者:User

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)

root@10.1.6.205:~# tar -C /usr/local -xzvf mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gzroot@10.1.6.205:/usr/local# ln -s /usr/local/mysql-cluster-gpl-7.2.8-linux2.6-i686 /usr/local/mysqlroot@10.1.6.205:/usr/local# cd mysqlroot@10.1.6.205:/usr/local/mysql# scripts/mysql_install_db --user=mysqlroot@10.1.6.205:/usr/local/mysql# chown -R mysql:mysql /usr/local/mysql同理10.1.6.203

2.配置SQL節點和儲存NDB節點

root@10.1.6.205:/usr/local/mysql# vim /etc/my.cnf [mysqld]basedir=/usr/local/mysql/datadir=/usr/local/mysql/data/user=mysqlport=3306socket=/tmp/mysql.sock ndbclustermax_connect_errors=10000ndb-connectstring=10.1.6.205connect_timeout = 300 [mysql_cluster]ndb-connectstring=10.1.6.205

同理10.1.6.203
3.組態管理節點

root@10.1.6.205:/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=1hostname=10.1.6.205datadir=/opt/cluster #在MGM上儲存日誌的目錄 #設定儲存節點NDB1[ndbd]NodeId=2hostname=10.1.6.203datadir=/usr/local/mysql/data #設定儲存節點NDB2[ndbd]NodeId=3hostname=10.1.6.205datadir=/usr/local/mysql/data #設定SQL節點1[mysqld]NodeId=4hostname=10.1.6.203 #設定SQL節點2[mysqld]NodeId=5hostname=10.1.6.205[mysqld] #運行任意ip串連[mysqld]

4.啟動mysql cluster

1)先啟動管理節點伺服器.2)啟動NDB儲存節點伺服器.3)啟動SQL節點伺服器.

1)執行啟動MGM節點進程

root@10.1.6.205:/usr/local/mysql/bin# /usr/local/mysql/bin/ndb_mgmd -f /opt/cluster/config.iniMySQL Cluster Management Server mysql-5.5.22 ndb-7.2.6

必須用參數-f或--config-file告訴ndb_mgm設定檔config.ini檔案所在的位置.
2)在2台儲存節點伺服器上,如果是第一次啟動NDB進程的話,必須先執行以下命令:

root@10.1.6.205:/usr/local/mysql/bin# /usr/local/mysql/bin/ndbd --initial2013-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執行個體建立的,用於恢複的任何檔案,包括用於恢複的記錄檔.
如果不是第一次啟動,用以下命令

root@10.1.6.205:/usr/local/mysql/bin# /usr/local/mysql/bin/ndbd

3)啟動SQL節點伺服器

root@10.1.6.203:/usr/local/mysql/bin# /usr/local/mysql/bin/mysqld_safe /etc/my.cnf &

5.查看各個節點情況

root@10.1.6.205:/usr/local/mysql# /usr/local/mysql/bin/ndb_mgm-- NDB Cluster -- Management Client --ndb_mgm> showCluster 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上建立表


root@10.1.6.203:/usr/local/mysql/bin# /usr/local/mysql/bin/mysql -uroot -pmysql> use test;mysql> create table dave (num int(10)) engine=ndb;mysql> show create table dave\G;*************************** 1. row ***************************  Table: daveCreate Table: CREATE TABLE `dave` ( `num` int(10) DEFAULT NULL) ENGINE=ndbcluster DEFAULT CHARSET=latin11 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上查看該表

root@10.1.6.205:/usr/local/mysql# /usr/local/mysql/bin/mysql -uroot -pmysql> use testmysql> 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

root@10.1.6.205:/usr/local/mysql/bin# /usr/local/mysql/bin/ndb_mgm -e shutdownConnected to Management Server at: 10.1.6.205:11863 NDB Cluster node(s) have shutdown.Disconnecting to allow management server to shutdown.

再關閉SQL節點mysqld服務

root@10.1.6.203:/usr/local/mysql/bin# /usr/local/mysql/bin/mysqladmin -uroot -p shutdownEnter 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 雙機高可用.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.