mysql cluster 基於NDB CLUSTER存儲引擎的完整的分佈式數據庫系統。MYSQL CLUSTER是一個share nothing架構,各個mysql server之間並不共享任何數據。mysql cluster其實是在無共享存儲設備上實現的一種徹底分佈式數據庫系統。如今版本的MYSQL CLUSTER能夠作到將全部搜索引擎裝載在內存中,實際的數據能夠不用所有裝載到內存中。node
mysql cluster有3部分組成:mysql
1.sql node:負責數據庫存儲層之上的全部事情,好比連接管理,quere優化和相應,cache管理。須要在配置文件(my.cnf)添加ndbcluster參數。linux
2.data node:實現底層的數據存儲功能,保存cluster的數據,每一個data節點保存完整數據的一個fragment.通常來講ndb節點被組織成一個一個的ndb group,一個ndb group實際上就是一組存有徹底相同的物理數據的NDB節點羣。數據節點的配置參數在管理節點的config.ini中配置。NoOfreplicas參數指定每一份數據被冗餘存儲在不一樣節點上面的分數,通常至少設置成2.sql
3.managerment node:負責管理整個集羣中的各個節點的管理工做,包括集羣的配置,啓動關閉節點,對各個節點進行常規維護,以及實施數據的備份等。shell
mysql cluter 啓動順序:數據庫
managerment node --->data node --->sql nodevim
######################################################3網絡
mysql cluster network:架構
managerment node:10.10.54.86分佈式
data node:10.10.54.85/87
sql node:10.10.54.85/87
備份之前數據:
[root@nan86 ~]# mv /usr/local/mysql/ /usr/local/mysql_bak
[root@nan85 ~]# mv /usr/local/mysql/ /usr/local/mysql_bak
[root@nan87 ~]# mv /usr/local/mysql/ /usr/local/mysql_bak
配置步驟:
1.解壓文件: 三個主機85,86,87都作以下操做: #tar xvf mysql-cluster-gpl-7.2.15-linux2.6-x86_64.tar.gz #mv mysql-cluster-gpl-7.2.15-linux2.6-x86_64 /usr/local/mysql #chown mysql.mysql -R /usr/local/mysql 2.配置管理節點 在主機10.10.54.86上: [root@nan86 bin]# cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin/ [root@nan86 etc]# pwd /etc [root@nan86 etc]# mkdir ndb [root@nan86 ndb]# vim /etc/ndb/config.ini [NDBD DEFAULT] NoOfReplicas=2 DataMemory=512M IndexMemory=256M //能夠不加 [TCP DEFAULT] portnumber=2202 [NDB_MGMD] nodeid=1 hostname=10.10.54.86 datadir=/data/ndb [NDBD] nodeid=2 hostname=10.10.54.85 datadir=/data/ndb BackupDataDir=/data/backup [NDBD] nodeid=3 hostname=10.10.54.87 datadir=/data/ndb BackupDataDir=/data/backup [MYSQLD] nodeid=10 hostname=10.10.54.85 [MYSQLD] nodeid=11 hostname=10.10.54.87 3.SQL節點配置 在主機10.10.54.85和10.10.54.87上作以下操做: #/etc/init.d/mysqld stop # vim /etc/my.cnf //添加以下: [mysql_cluster] ndb-connectstring=10.10.54.86 [mysqld] datadir=/data/ndb ndbcluster ndb-connectstring=10.10.54.86 # vim /etc/init.d/mysqld #修改下面的數據 datadir=/data/ndb 初始化數據: #/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql 4.啓動管理節點 在主機10.10.54.86上 [root@nan86 ~]# ndb_mgmd -f /etc/ndb/config.ini --initial MySQL Cluster Management Server mysql-5.5.35 ndb-7.2.15 [root@nan86 ~]# ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show 5.啓動data節點 在10.10.54.85和10.10.54.87 # ndbd --initial --ndb-connectstring=10.10.54.86 2014-02-26 08:21:38 [ndbd] INFO -- Angel connected to '10.10.54.86:1186' 2014-02-26 08:21:38 [ndbd] INFO -- Angel allocated nodeid: 2 6.啓動SQL節點 在10.10.54.85和10.10.54.87 #/etc/init.d/mysqld start 7.查看SQL節點和data節點是否成功 在管理節點上,看到以下是成功的。 [root@nan86 ndb]# ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @10.10.54.85 (mysql-5.5.35 ndb-7.2.15, Nodegroup: 0, *) id=3 @10.10.54.87 (mysql-5.5.35 ndb-7.2.15, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @10.10.54.86 (mysql-5.5.35 ndb-7.2.15) [mysqld(API)] 2 node(s) id=4 @10.10.54.85 (mysql-5.5.35 ndb-7.2.15) id=5 @10.10.54.87 (mysql-5.5.35 ndb-7.2.15) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 若是看到以下: ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 (not connected, accepting connect from 10.10.54.85) id=3 (not connected, accepting connect from 10.10.54.87) [ndb_mgmd(MGM)] 1 node(s) id=1 @10.10.54.86 (mysql-5.5.35 ndb-7.2.15) [mysqld(API)] 2 node(s) id=4 (not connected, accepting connect from 10.10.54.85) id=5 (not connected, accepting connect from 10.10.54.87) 解決方法: (1)查看SQL節點和data節點是否啓動。 (2)查看/data/ndb下全部文件全部者否是mysql.mysql /usr/local/mysql下全部文件全部者否是mysql.mysql (3)查看iptables (4)查看網絡 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 7.驗證NDB集羣 在10.10.54.85上 mysql> create table sn(age int) -> engine=ndb; mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | sn | +----------------+ mysql> insert into sn values(12); ... 在10.10.54.87上 mysql> select * from sn; +------+ | age | +------+ | 12 | | 12 | | 12 | | 12 | | 12 | +------+ 經測試,插入更新一樣能同步。