檔案
大小
md5
mysqlcluster-7.3.2-linux-x32.tar.gz
431.0mb
03093541b6416fc93935750d614d875b
mysqlcluster-7.3.2-linux-x64.tar.gz
441.8mb
330c71a87fbf8f0468ec9c5e0ad6e794
官方下載下傳位址:http://dev.mysql.com/downloads/cluster/
mysqlcluster-7.3.2-windows-x32.msi
100.2mb
9d25735d7e8af1a2e805f9a1fecc3a1f
mysqlcluster-7.3.2-windows-x64.msi
95.5mb
6fe30e2045f074f471761cb17f0c3d1c
“ndb” 是一種“記憶體中”的存儲引擎,也是事務型存儲引擎,具備acid屬性。
管理(mgm)節點:負責管理mysql cluster内的其他節點,如提供配置資料、啟動并停止節點、運作備份等。由于這類節點負責管理其他節點的配置,應在啟動其他節點之前首先啟動這類節點。mgm節點是用指令“ndb_mgmd”啟動的。
資料節點:用于儲存 cluster的資料。資料節點的數目與副本的數目相關,是片段的倍數。資料節點是用指令“ndbd”啟動的。
sql節點:用來通路 cluster資料的節點。也就是mysql服務,可以使用service mysqld start啟動。
管理伺服器(mgm節點)負責管理 cluster配置檔案和 cluster日志。 cluster中的每個節點從管理伺服器檢索配置資料,并請求确定管理伺服器所在位置的方式。當資料節點内出現新的事件時,節點将關于這類事件的資訊傳輸到管理伺服器,然後,将這類資訊寫入 cluster日志。

叢集配置概述:
安裝版本:mysql cluster 7.3.2
作業系統 :centos6.3(x64)
軟體名稱 :mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.tar.gz (通用版)
管理節點ip:192.168.0.202
資料節點-sql節點ip:192.168.0.203
資料節點-sql節點ip:192.168.0.204
安裝依賴包:yum install -y glibc perl libaio-devel
x32位系統要安裝相容庫組:yum groupinstall “compatibility libraries”
一、管理節點安裝配置
1、安裝mysql-cluster
1
2
3
4
5
6
7
8
<code>groupadd mysql</code>
<code>useradd</code> <code>-g mysql -s </code><code>/sbin/nologin</code> <code>mysql</code>
<code>tar</code> <code>-zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.</code><code>tar</code><code>.gz</code>
<code>mv</code> <code>mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64 </code><code>/usr/local/mysql-cluster</code>
<code>chown</code> <code>-r root.mysql </code><code>/usr/local/mysql/</code>
<code>chown</code> <code>-r mysql.mysql </code><code>/usr/local/mysql/data/</code>
<code>/usr/local/mysql/scripts/mysql_install_db</code> <code>--basedir=</code><code>/usr/local/mysql</code> <code>--datadir=</code><code>/usr/local/mysql/data</code> <code>--user=mysql & </code><code>#初始化資料庫</code>
<code>cp</code> <code>-rf </code><code>/usr/local/mysql/bin/ndb_mgm</code><code>* </code><code>/usr/local/bin/</code> <code>#複制ndb節點管理指令到本地,友善使用</code>
2、修改mysql主配置檔案
9
10
11
12
<code>vi</code> <code>/etc/my</code><code>.cnf</code>
<code>[mysqld]</code>
<code> </code><code>user = mysql</code>
<code> </code><code>socket = </code><code>/tmp/mysql</code><code>.sock</code>
<code> </code><code>basedir = </code><code>/usr/local/mysql</code> <code>#安裝目錄</code>
<code> </code><code>datadir = </code><code>/usr/local/mysql/data</code> <code>#資料庫存放目錄</code>
<code> </code><code>character-</code><code>set</code><code>-server=utf8</code>
<code> </code><code>ndbcluster </code><code>#運作ndb存儲引擎</code>
<code> </code><code>ndb-connectstring=192.168.0.202</code>
<code> </code><code>lower_case_table_names=1 </code><code>#表名是否區分大小寫1為不區分,不然linux下表名是區分大小寫的</code>
<code>[mysql_cluster]</code>
<code>ndb-connectstring=192.168.0.202 </code><code>#mysql cluster管理節點ip</code>
3、建立mysql叢集配置檔案
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<code>mkdir</code> <code>/var/lib/mysql-cluster</code>
<code>vi</code> <code>/var/lib/mysql-cluster/config</code><code>.ini</code>
<code>[ndbd default]</code>
<code>noofreplicas=2 </code><code>#定義在cluster環境中相同資料的份數,最大為4</code>
<code>datamemory=256m </code><code>#配置設定的資料記憶體大小,根據本機伺服器記憶體适量來配置設定</code>
<code>indexmemory=256m </code><code>#設定用于存放索引(非主鍵)資料的記憶體段大小</code>
<code>#一個ndb節點能存放的資料量是會受到datamemory和indexmemory兩個參數設定的限制,兩者任何一個達到限制數量後,都無法再增加能存儲的資料量。如果繼續存入資料系統會報錯“table is full”。</code>
<code>[ndb_mgmd]</code>
<code>nodeid=1</code>
<code>hostname</code><code>=192.168.0.202</code>
<code>datadir=</code><code>/var/lib/mysql-cluster/</code>
<code>[ndbd]</code>
<code>nodeid=2</code>
<code>hostname</code><code>=192.168.0.203</code>
<code>datadir=</code><code>/usr/local/mysql/data</code>
<code>nodeid=3</code>
<code>hostname</code><code>=192.168.0.204</code>
<code>nodeid=4</code>
<code>nodeid=5</code>
<code>儲存退出!</code>
<code>chown</code> <code>mysql.mysql </code><code>/var/lib/mysql-cluster/config</code><code>.ini</code>
二、兩台資料節點和sql節點配置相同
<code>mv</code> <code>mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64 </code><code>/usr/local/mysql</code>
<code>chown</code> <code>-r root.mysql </code><code>/usr/local/mysql</code>
<code>chown</code> <code>-r mysql.mysql </code><code>/usr/local/mysql/data</code>
<code>/usr/local/mysql/scripts/mysql_install_db</code> <code>--basedir=</code><code>/usr/local/mysql</code> <code>--datadir=</code><code>/usr/local/mysql/data</code> <code>--user=mysql & </code><code>#初始化資料庫</code>
<code>cp</code> <code>/usr/local/mysql/support-files/mysql</code><code>.server </code><code>/etc/init</code><code>.d</code><code>/mysqld</code>
<code>cp</code> <code>/usr/local/mysql/support-files/medium</code><code>.cnf </code><code>/etc/my</code><code>.cnf</code>
<code>chmod</code> <code>+x</code><code>/etc/init</code><code>.d</code><code>/mysqld</code>
2、修改mysql配置檔案
<code>user=mysql</code>
<code>character_set_server=utf8</code>
<code>ndbcluster</code>
<code>ndb-connectstring=192.168.0.202</code>
<code>default-storage-engine=ndbcluster </code><code>#設定預設是ndb存儲引擎</code>
<code>basedir=</code><code>/usr/local/mysql</code>
<code>ndb-connectstring=192.168.0.202 </code><code>#mysql cluster 管理節點ip</code>
三、測試(先關閉三台伺服器的防火牆(iptables)與 selinux)
1、啟動管理節點
<code>ndb_mgmd -f </code><code>/var/lib/mysql-cluster/config</code><code>.ini --initial</code>
<code>netstat</code> <code>-tuplna | </code><code>grep</code> <code>1186 </code><code>#預設連接配接端口1186,啟動成功</code>
<code>tcp 0 0 0.0.0.0:1186 0.0.0.0:* listen 1369</code><code>/ndb_mgmd</code>
#--initial:第一次啟動時加上,其它時候不要加,不然會資料清空,除非是在備份、恢複或配置變化後重新開機時。
如果啟動出現報錯:把config.ini裡設定的nodeid都給删除即可!
2、啟動兩台資料節點和sql節點
資料節點:/usr/local/mysql/bin/ndbd --initial
sql節點:bin/mysqld_safe --user=mysql & 或 service mysqld start
3、檢視叢集狀态
ndb_mgm -e show #顯示管理節點和資料節點則配置成功
4、建立一個資料庫驗證是否同步
<code>mysql -u root -p</code>
<code>mysql>create database </code><code>test</code><code>;</code>
<code>mysql>use </code><code>test</code><code>;</code>
<code>mysql>create table abc (</code><code>id</code> <code>int) engine=ndbcluster;</code><code>#指定資料庫表的引擎為ndb,否則同步失敗</code>
<code>mysql>insert into abc ()values (1);</code>
<code>mysql></code><code>select</code> <code>* from abc;</code>
#此時看兩個資料是否資料一緻,如果一緻說明叢集已經成功!
注意事項:
1.在建表的時候一定要用engine=ndb或engine=ndbcluster指定使用ndb叢集存儲引擎,或用alter table選項更改表的存儲引擎。
2.ndb表必須有一個主鍵,是以建立表的時候必須定義主鍵,否則ndb存儲引擎将自動生成隐含的主鍵。
3.sql節點的使用者權限表仍然采用myisam存儲引擎儲存的,是以在一個sql節點建立的mysql使用者隻能通路這個節點,如果要用同樣的使用者通路别的sql節點,需要在對應的sql節點追加使用者。
四、管理和維護指令
關閉mysql叢集:ndb_mgm -e shutdown
重新開機mysql叢集:ndb_mgmd -f /var/lib/mysql-cluster/config.ini
重新開機資料節點:/usr/local/mysql/bin/ndbd
啟動sql節點:/usr/local/mysql/bin/mysqld_safe --user=mysql & 或 service mysqld restart
檢視mysql狀态:ndb_mgm -e show
啟動順序:
管理節點 -> 資料節點 -> sql節點
關閉順序:
sql節點 -> 資料節點 -> 管理節點