本文遵循“署名非商業性使用相同方式共享 2.5 中國大陸”協議
您可以自由複製、發行、展覽、表演、放映、廣播或通過信息網絡傳播本作品
您可以根據本作品演義自己的作品
您必須按照作者或者許可人指定的方式對作品進行署名。
您不得將本作品用於商業目的。
如果您改變、轉換本作品或者以本作品爲基礎進行創作,您只能採用與本協議相同的許
可協議發佈基於本作品的演繹作品。
對任何再使用或者發行,您都必須向他人清楚地展示本作品使用的許可協議條款。
如果得到著作權人的許可,您可以不受任何這些條件的限制。
- 管理(MGM)節點:這類節點的作用是管理MySQL 簇內的其他節點,如提供配置數據、啓動並停止節點、運行備份等。由於這類節點負責管理其他節點的配置,應在啓動其他節點之前首先啓動這類節點。MGM 節點是用命令ndb_mgmd啓動的。
- 數據節點:這類節點用於保存簇的數據。數據節點的數目與副本的數目相關,是片段的倍數。例如,對於兩個副本,每個副本有兩個片段,那麼就有4 個數據節點。沒有必要有一個以上的副本。數據節點是用命令ndbd 啓動的。
- SQL 節點:這是用來訪問簇數據的節點。對於MySQL 簇,客戶端節點是使用NDB 簇存儲引擎的傳統MySQL 服務器。典型情況下,SQL 節點是使用命令
mysqld –ndbcluster 啓動的,或將ndbcluster 添加到my.cnf 後使用mysqld啓動。
- MySQL-client-community。
- MySQL-server-community。
- MySQL-clusterstorage-community。
- MySQL-clustermanagement-community。
- MySQL-clustertools-community。
# mysql_install_db --user=mysql
- 配置管理節點配置文件:
# cd /var/lib/mysql-cluster
# vi config.ini
在config.ini中添加如下內容:
[ndbd default]
NoOfReplicas= 2
MaxNoOfConcurrentOperations= 10000
DataMemory= 80M
IndexMemory= 24M
TimeBetweenWatchDogCheck= 30000
DataDir= /var/lib/mysql-cluster
MaxNoOfOrderedIndexes= 512
StartPartialTimeout=100
StartPartitionedTimeout=100
ArbitrationTimeout=5000
TransactionDeadlockDetectionTimeout=5000
HeartbeatIntervalDbDb=5000
StopOnError=0
[ndb_mgmd default]
DataDir= /var/lib/mysql-cluster
[ndb_mgmd]
Id=1
HostName=db1---------------------------------------也可配成192.168.102.19
[ndb_mgmd]
Id=2
HostName=db2---------------------------------------也可配成192.168.102.29
[ndbd]
Id= 3
HostName=db1---------------------------------------也可配成192.168.102.19
[ndbd]
Id= 4
HostName=db2---------------------------------------也可配成192.168.102.29
[mysqld]
ArbitrationRank=2 (非常重要,全靠有它,纔可以形成仲裁競爭,從而當另一個機子當了時,此機還可以有知道partion完整的節點)
[mysqld]
ArbitrationRank=2[mysqld]-------------------------------------------------空出來以便恢復數據庫用[mysqld]-------------------------------------------------空出來以便恢復數據庫用[tcp default]
PortNumber=63132 - 配置通用my.cnf文件,mysqld及ndbd,ndb_mgmd均使用此文件.
# vi /etc/my.cnf
在my.cnf中添加如下內容:
[mysqld]
default-storage-engine=ndbcluster 避免在sql語句中還要加入ENGINE=NDBCLUSTER。
ndbcluster 這個要加上,否則mysql會啓動不了
ndb-connectstring=db1,db2-----------------------------------------------也可配成192.168.102.19,192.168.102.29interactive_timeout=28800000wait_timeout=28800000log-bin---------------------------------------------------------------------------mysql增量備份用
[ndbd]
connect-string=db1,db2----------------------------------------------------也可配成192.168.102.19,192.168.102.29
[ndb_mgm]
connect-string=db1,db2----------------------------------------------------也可配成192.168. 102.19,192.168.102.29
[ndb_mgmd]
config-file=/var/lib/mysql-cluster/config.ini
[mysql_cluster]
ndb-connectstring=db1,db2------------------------------------------------也可配成192.168.102.19,192.168.102.29保存退出後。 - 分別啓動db1、db2的mysql服務:
# service mysql start啓動mysql之前一定要先保證ndbd和ndb_mgmd沒有啓動,否則會導致mysql啓動不了
- 啓動管理節點Server1爲:
# ndb_mgmd --ndb_nodeid=1
啓動管理節點Server2爲:
# ndb_mgmd --ndb_nodeid=2
注:在啓動時有一個警告提示
Cluster configuration warning:
arbitrator with id 1 and db node with id 3 on same host 192.168.102.19
arbitrator with id 2 and db node with id 4 on same host 192.168.102.29
Running arbitrator on the same host as a database node may
cause complete cluster shutdown in case of host failure.
說節點1和3,2和4的arbitrator一樣,可能引起整個集羣失敗。(可以不用放在心上) - 自動重啓功能的添加:
#chkconfig --add mysql#chkconfig --level 345 mysql on[root@mysql1 mysql]# vi /etc/rc.localndb_mgmd -f /var/lib/mysql-cluster/config.inindbd
# ndbd -- ndb_nodeid=3 --initial
在db2中
# ndbd -- ndb_nodeid =4 --initial
注:只有在第一次啓動ndbd時或者對config.ini進行改動後才需要使用--initial參數!!!該參數會使節點刪除由早期ndbd實例創建的、用於恢復的任何文件,包括恢復用日誌文件。
Connected to Management Server at: 192.168.102.19:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=3 @192.168.102.19 (mysql-5.1.30 ndb-6.3.20, Nodegroup: 0)
id=4 @192.168.102.29 (mysql-5.1.30 ndb-6.3.20, Nodegroup: 0, Master)
id=1 @192.168.102.19 (mysql-5.1.30 ndb-6.3.20)
id=2 @192.168.102.29 (mysql-5.1.30 ndb-6.3.20)
id=5 @192.168.102.29 (mysql-5.1.30 ndb-6.3.20)
id=6 @192.168.102.19 (mysql-5.1.30 ndb-6.3.20)
id=7 (not connected, accepting connect from any host)
id=8 (not connected, accepting connect from any host)
LogFile=/backup/mysql/mysqlbak.log
echo " " >> $LogFile
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile