mysql-cluster mysql集羣

MySQL Cluster MySQL集羣

Linux最新版本7.3.2

文件 大小 md5
mysqlcluster-7.3.2-linux-x32.tar.gz 431.0MB 03093541b6416fc93935750d614d875b
mysqlcluster-7.3.2-linux-x64.tar.gz 441.8MB 330c71a87fbf8f0468ec9c5e0ad6e794

Window最新版本7.3.2

文件 大小 md5
mysqlcluster-7.3.2-windows-x32.msi 100.2MB 9d25735d7e8af1a2e805f9a1fecc3a1f
mysqlcluster-7.3.2-windows-x64.msi 95.5MB 6fe30e2045f074f471761cb17f0c3d1c

基本概念:

「NDB」 是一種「內存中」的存儲引擎,它具備可用性高和數據一致性好的特色。 
MySQL Cluster 可以使用多種故障切換和負載平衡選項配置NDB存儲引擎,但在 Cluster 級別上的存儲引擎上作這個最簡單。MySQL Cluster的NDB存儲引擎包含完整的數據集,僅取決於 Cluster自己內的其餘數據。 
node

  • 管理(MGM)節點:這類節點的做用是管理MySQL Cluster內的其餘節點,如提供配置數據、啓動並中止節點、運行備份等。因爲這類節點負責管理其餘節點的配置,應在啓動其餘節點以前首先啓動這類節點。MGM節點是用命令「ndb_mgmd」啓動的。mysql

  • 數據節點:這類節點用於保存 Cluster的數據。數據節點的數目與副本的數目相關,是片斷的倍數。例如,對於兩個副本,每一個副本有兩個片斷,那麼就有4個數據節點。不過沒有必要設置多個副本。數據節點是用命令「ndbd」啓動的。linux

  • SQL節點:這是用來訪問 Cluster數據的節點。對於MySQL Cluster,客戶端節點是使用NDB Cluster存儲引擎的傳統MySQL服務器。一般,SQL節點是使用命令「mysqld -ndbcluster」啓動的,或將「ndbcluster」添加到「my.cnf」後使用「mysqld」啓動。sql

管理服務器(MGM節點)負責管理 Cluster配置文件和 Cluster日誌。 Cluster中的每一個節點從管理服務器檢索配置數據,並請求肯定管理服務器所在位置的方式。當數據節點內出現新的事件時,節點將關於這類事件的信息傳輸到管理服務器,而後,將這類信息寫入 Cluster日誌。數據庫

090506799.jpg

集羣配置概述:
windows

安裝版本:mysql cluster 7.3.2centos

操做系統 :centos6.3(X64)服務器

軟件名稱 :mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.tar.gz (通用版)socket

管理節點IP:192.168.0.202tcp

數據節點-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
groupadd mysql
useradd  -g mysql -s  /sbin/nologin  mysql
tar  -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64. tar .gz
mv  mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64  /usr/local/mysql-cluster
chown  -R root.mysql  /usr/local/mysql/
chown  -R mysql.mysql  /usr/local/mysql/data/
/usr/local/mysql/scripts/mysql_install_db  --basedir= /usr/local/mysql  --datadir= /usr/local/mysql/data  --user=mysql &   #初始化數據庫
cp  -rf  /usr/local/mysql/bin/ndb_mgm /usr/local/bin/  #複製ndb節點管理命令到本地,方便使用

二、修改mysql主配置文件

1
2
3
4
5
6
7
8
9
10
11
12
vi  /etc/my .cnf
[MYSQLD]
  user = mysql
  socket =  /tmp/mysql .sock
  basedir =  /usr/local/mysql  #安裝目錄
  datadir =  /usr/local/mysql/data  #數據庫存放目錄
  character-sets-server=UTF8
  ndbcluster  #運行NDB存儲引擎
  ndb-connectstring=192.168.0.202
  lower_case_table_names=1  #表名是否區分大小寫1爲不區分,否則linux下表名是區分大小寫的
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.202  #Mysql Cluster管理節點IP

三、建立mysql集羣配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
mkdir  /var/lib/mysql-cluster
vi  /var/lib/mysql-cluster/config .ini
[ndbd default]
NoOfReplicas=2  #定義在Cluster環境中相同數據的份數,最大爲4
DataMemory=256M  #分配的數據內存大小,根據本機服務器內存適量來分配
IndexMemory=256M  #設定用於存放索引(非主鍵)數據的內存段大小
#一個NDB節點能存放的數據量是會受到DataMemory和IndexMemory兩個參數設置的約束,二者任何一個達到限制數量後,都沒法再增長能存儲的數據量。若是繼續存入數據系統會報錯「table is full」。
[ndb_mgmd]
nodeid=1
hostname =192.168.0.202
datadir= /var/lib/mysql-cluster/
[ndbd]
nodeid=2
hostname =192.168.0.203
datadir= /usr/local/mysql/data
[ndbd]
nodeid=3
hostname =192.168.0.204
datadir= /usr/local/mysql/data
[mysqld]
nodeid=4
hostname =192.168.0.203
[mysqld]
nodeid=5
hostname =192.168.0.204
保存退出!
chown  mysql.mysql  /var/lib/mysql-cluster/config .ini

2、兩臺數據節點和SQL節點配置相同

一、安裝mysql-cluster

1
2
3
4
5
6
7
8
9
10
tar  -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64. tar .gz
mv  mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64  /usr/local/mysql
groupadd mysql
useradd  -g mysql -s  /sbin/nologin  mysql
chown  -R root.mysql  /usr/local/mysql
chown  -R mysql.mysql  /usr/local/mysql/data
/usr/local/mysql/scripts/mysql_install_db  --basedir= /usr/local/mysql  --datadir= /usr/local/mysql/data  --user=mysql &  #初始化數據庫
cp  /usr/local/mysql/support-files/mysql .server  /etc/init .d /mysqld
cp  /usr/local/mysql/support-files/medium .cnf  /etc/my .cnf
chmod  +x /etc/init .d /mysqld

二、修改mysql配置文件

1
2
3
4
5
6
7
8
9
10
11
vi  /etc/my .cnf
[MYSQLD]
user=mysql
character_set_server=utf8
ndbcluster
ndb-connectstring=192.168.0.202
default-storage-engine=ndbcluster  #設置默認是NDB存儲引擎
datadir= /usr/local/mysql/data
basedir= /usr/local/mysql
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.202  #mysql cluster 管理節點IP

3、測試(先關閉三臺服務器的防火牆(IPTABLES)與 Selinux)

一、啓動管理節點

1
2
3
ndb_mgmd -f  /var/lib/mysql-cluster/config .ini --initial
netstat  -tuplna |  grep  1186  #默認鏈接端口1186,啓動成功
tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN 1369 /ndb_mgmd

#--initial:第一次啓動時加上,其它時候不要加,否則會數據清空,除非是在備份、恢復或配置變化後重啓時。

若是啓動出現報錯:把config.ini裏設置的nodeid都給刪除便可!

151716979.jpg

二、啓動兩臺數據節點和SQL節點

數據節點:/usr/local/mysql/bin/ndbd --initial

SQL節點:bin/mysqld_safe --user=mysql & 或 service mysqld start

三、查看集羣狀態

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

四、建立一個數據庫驗證是否同步

1
2
3
4
5
6
mysql -u root -p
Mysql>create database  test ;
Mysql>use  test ;
Mysql>create table abc ( id  int) engine=ndbcluster; #指定數據庫表的引擎爲NDB,不然同步失敗
Mysql>Insert into abc ()values (1);
Mysql> select  * from abc;

#此時看兩個數據是否數據一致,若是一致說明集羣已經成功!

注意事項:

1.在建表的時候必定要用ENGINE=NDB或ENGINE=NDBCLUSTER指定使用NDB集羣存儲引擎,或用ALTER TABLE選項更改表的存儲引擎。
2.NDB表必須有一個主鍵,所以建立表的時候必須定義主鍵,不然NDB存儲引擎將自動生成隱含的主鍵。
3.Sql節點的用戶權限表仍然採用MYISAM存儲引擎保存的,因此在一個Sql節點建立的MySql用戶只能訪問這個節點,若是要用一樣的用戶訪問別的Sql節點,須要在對應的Sql節點追加用戶。

4、管理和維護命令

關閉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節點 -> 數據節點 -> 管理節點

本文出自 「「企鵝」那點事兒」 博客,請務必保留此出處http://going.blog.51cto.com/7876557/1290451

相關文章
相關標籤/搜索