天天看點

MySQL Cluster叢集安裝及使用

檔案

大小

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叢集安裝及使用

叢集配置概述:

安裝版本: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 &amp;  </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 &amp; </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都給删除即可!

MySQL Cluster叢集安裝及使用

2、啟動兩台資料節點和sql節點

資料節點:/usr/local/mysql/bin/ndbd --initial

sql節點:bin/mysqld_safe --user=mysql &amp; 或 service mysqld start

3、檢視叢集狀态

ndb_mgm -e show #顯示管理節點和資料節點則配置成功

4、建立一個資料庫驗證是否同步

<code>mysql -u root -p</code>

<code>mysql&gt;create database </code><code>test</code><code>;</code>

<code>mysql&gt;use </code><code>test</code><code>;</code>

<code>mysql&gt;create table abc (</code><code>id</code> <code>int) engine=ndbcluster;</code><code>#指定資料庫表的引擎為ndb,否則同步失敗</code>

<code>mysql&gt;insert into abc ()values (1);</code>

<code>mysql&gt;</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 &amp; 或 service mysqld restart

檢視mysql狀态:ndb_mgm -e show

啟動順序:

管理節點 -&gt; 資料節點 -&gt; sql節點

關閉順序:

sql節點 -&gt; 資料節點 -&gt; 管理節點