標籤:mysql-cluster
1、MySQL叢集的作用:
- 解決訪問節點的單點故障
- 資料存放區節點的單點故障
- 解決資料存放區節點資料備份問題
2、叢集:
使用一組伺服器提供相同的服務
3、關於MySQL-Cluster:
MySQL官方提供的叢集版本
已整合標準版MySQL程式,可獨立安裝使用
採用NDB(Network DataBase)引擎
假定每個節點都有獨立記憶體、硬碟
利用廉價硬體減少整個資料庫的單點故障
4、叢集中伺服器的角色
- 資料節點:ndbd(單線程) ndb_mtd(多線程) 儲存資料的(表裡的記錄)
- Sql節點:mysqld 是用戶端訪問資料的介面,負責執行SQL命令
可理解為支援NDB的標準MySQL伺服器,僅儲存表結構、獨立的使用者授權
面向用戶端提供使用者鑒權、SQL查詢等訪問服務
- 管理節點:ndb_mgmd 管理叢集中的所有伺服器
用戶端:client 訪問資料
5、案例拓撲:
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/82/D7/wKioL1diZQbROH8sAAJm9-ucjMk347.png-wh_500x0-wm_3-wmp_4-s_4123782686.png" title="1.png" alt="wKioL1diZQbROH8sAAJm9-ucjMk347.png-wh_50" />
6、650) this.width=650;" width="1" height="1" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/themes/default/images/word.gif") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />MySQL叢集的搭建(配置)
1)公用配置:
# rpm -qa | grep -i mysql
# service mysql stop ; chkconfig mysql off
# rpm -e --nodeps MySQL-devel MySQL-embeddedMySQL-test MySQL-server MySQL-client MySQL-shared MySQL-shared-compat
//保留RHEL內建的mysql-libs包
# rm -rf /etc/my.cnf
# rm -rf /var/lib/mysql/*
# tar -xvfMySQL-Cluster-gpl-7.3.3-1.el6.x86_64.rpm-bundle.tar
# rpm -Uvh MySQL-Cluster-*.rpm
2)組態管理節點:
運行管理進程 ndb_mgmd
設定檔 /etc/config.ini (伺服器的角色 和角色對應的ip id號 工作目錄)
[ndbd default] :資料節點的公用配置
[ndb_mgmd] :指定管理節點
[ndbd] :指定資料節點
[mysqld] :指定sql節點
# mkdir -p /var/log/mysql-cluster //建立工作目錄
# vim /etc/config.ini //編寫主設定檔
[ndbd default]
NoOfReplicas=2 //保留2份資料拷貝
DataMemory=80M //資料緩衝大小
IndexMemory=18M //索引緩衝大小
[ndb_mgmd]
nodeid=7 //管理節點的ID標識
hostname=192.168.4.100 //管理節點的IP地址
datadir=/var/log/mysql-cluster //工作目錄
[ndbd] //設定資料節點ndbA
nodeid=8 //資料節點ndbA的ID標識
hostname=192.168.4.30 //此節點的IP地址
datadir=/var/log/mysql-cluster/data //工作目錄
[ndbd] //設定資料節點ndbB
nodeid=9
hostname=192.168.4.40
datadir=/var/log/mysql-cluster/data
[mysqld] //設定sql節點sqlA
nodeid=10 //sql節點sqlA的ID標識
hostname=192.168.4.10 //此節點的IP地址
[mysqld] //設定sql節點sqlB
nodeid=11
hostname=192.168.4.20
:wq
3)配置資料節點:
運行資料進程 ndbd
設定檔: /etc/my.cnf
#mkdir -p /var/log/mysql-cluster/data //建立工作目錄
#vim /etc/my.cnf
[mysqld]
datadir=/var/log/mysql-cluster/data //工作目錄
ndb-connectstring=192.168.4.100 //管理節點IP地址
ndbcluster //指定使用ndbcluster叢集儲存引擎
[mysql_cluster]
ndb-connectstring=192.168.4.100 //如何串連管理節點
:wq
4)配置sql節點
運行mysql服務 mysql(此服務是由mysql-cluster軟體包提供)
#vim /etc/my.cnf
[mysqld]
ndbcluster //指定使用ndbcluster叢集儲存引擎
default-storage-engine=ndbcluster //指定表的預設儲存引擎是 ndbcluster
ndb-connectstring=192.168.4.100
[mysql_cluster]
ndb-connectstring=192.168.4.100 //如何串連管理節點
:wq
7、啟動不同角色服務器上進程
1) 啟動管理節點上的管理進程
#ndb_mgmd -f /etc/config.ini
//啟動進程,結合-f選項讀取.ini配置;預設後台模式,調試時可加--nodaemon;修改了配置以後,可加--initial重新初始化
#netstat -untlap | grep :1186 //查看進程
#pkill -9 ndb_mgmd //殺死進程
2)依次啟動資料節點上的資料進程
#ndbd
//首次執行時,可加--initial初始化;多個資料節點的操作相同
3)依次啟動sql節點上的資料庫服務
#service mysql start //多個sql節點的操作相同
8、查看叢集狀態
1)管理節點上登入管理介面,查看狀態
#ndb_mgm
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2node(s)
id=8 @192.168.4.30 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *)
id=9 @192.168.4.40 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=7 @192.168.4.100 (mysql-5.6.14 ndb-7.3.3)
[mysqld(API)] 2 node(s)
id=10 @192.168.4.10 (mysql-5.6.14 ndb-7.3.3)
id=11 @192.168.4.20 (mysql-5.6.14 ndb-7.3.3)
ndb_mgm>
2)Sql節點的mysql初始化
重設root密碼;為用戶端訪問添加使用者授權
#service mysqlstart
#mysql -uroot -p初始密碼 //初始密碼見/root/.mysql_secret檔案
3)在sql節點上,檢查預設的儲存引擎
Mysql>show engines;
9、測試訪問節點的單點故障
在sql節點上授權可以從遠端的客戶機串連自己
Grant all on webdb.* to [email protected]”%”identified by “webuser88”; //兩個sql節點都做授權
用戶端訪問:#mysql-h192.168.10/20 -uwebuser -pwebuser88
mysql>create database webdb;
mysql>create table webdb.a(id int);
mysql>insert into webdb.a values(1000);
mysql> select * from webdb.a ;
訪問sqlA節點操縱資料,在sqlB上會同步結果。
10、測試資料節點的單點故障
資料節點之間可以互相備份,自動選舉Master,自動同步資料。測試時可關掉一個資料節點的ndbd服務,插入、查詢資料驗證資料的同步性。
Sql節點和資料節點的進程正常運行後,不需要重啟的話,管理節點可以關掉
本文出自 “IT技術學習” 部落格,請務必保留此出處http://learningit.blog.51cto.com/9666723/1789961
使用MySQL-Cluster搭建MySQL資料庫叢集