首頁  >  文章  >  資料庫  >  MySQL - Cluster MySQL 集群

MySQL - Cluster MySQL 集群

Guanhui
Guanhui轉載
2020-05-28 11:48:552498瀏覽

MySQL - Cluster MySQL 集群

MySQL Cluster MySQL叢集

基本概念:

「NDB」 是一種“記憶體中」的儲存引擎,它具有可用性高且資料一致性好的特性。 

MySQL Cluster 能夠使用多種故障切換和負載平衡選項來設定NDB儲存引擎,但在 Cluster 層級上的儲存引擎上做這個最簡單。 MySQL Cluster的NDB儲存引擎包含完整的資料集,僅取決於 Cluster本身內的其他資料。 

管理(MGM)節點:這類節點的功能是管理MySQL Cluster內的其他節點,如提供設定資料、啟動並停止節點、執行備份等。由於這類節點負責管理其他節點的配置,應在啟動其他節點之前先啟動這類節點。 MGM節點是用指令「ndb_mgmd」啟動的。

資料節點:這類節點用來保存 Cluster的資料。資料節點的數目與副本的數目相關,是片段的倍數。例如,對於兩個副本,每個副本有兩個片段,那麼就有4個資料節點。不過沒有必要設定多個副本。資料節點是用指令“ndbd”啟動的。

SQL節點:這是用來存取 Cluster資料的節點。對於MySQL Cluster,客戶端節點是使用NDB Cluster儲存引擎的傳統MySQL伺服器。通常,SQL節點是使用命令“mysqld -ndbcluster”啟動的,或將“ndbcluster”添加到“my.cnf”後使用“mysqld”啟動。

管理伺服器(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.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

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节点管理命令到本地,方便使用

2、修改mysql主設定檔

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

3、建立mysql叢集設定檔

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

二、兩台資料節點和SQL節點配置相同

#1、安裝mysql-cluster

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

2、修改mysql設定檔

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

三、測試(先關閉三台伺服器的防火牆(IPTABLES)與Selinux)

1、啟動管理節點

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都給刪除即可!

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

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

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

3、查看叢集狀態

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

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

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節點追加用戶。

四、管理與維護指令

關閉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節點-> 資料節點-> 管理節點推薦教學:《

MySQL教學###》###

以上是MySQL - Cluster MySQL 集群的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:oschina.net。如有侵權,請聯絡admin@php.cn刪除