2012-09-23 115 views
0

我有2臺計算機在Window 7上運行,我想嘗試MySQL數據庫複製。 配置如下。 2 MGT節點 數據節點 2 mysqlid節點MySQL集羣數據節點不同步

我有配置文件的config.ini

[ndbd default] 
noofreplicas=2 

[ndbd] 
hostname=192.168.0.1 
NodeId=1 

[ndbd] 
hostname=192.168.0.2 
NodeId=2 

[ndb_mgmd] 
hostname=192.168.0.1 
NodeId=101 

[ndb_mgmd] 
hostname=192.168.0.2 
NodeId=102 

[mysqld] 
NodeId=51 
hostname=192.168.0.1 

[mysqld] 
NodeId=52 
hostname=192.168.0.2 

和my.cnf中(0.1)

[mysqld] 
ndb-nodeid=51 
ndbcluster 
datadir=c:\\Users\\Brian\\my_cluster\\mysqld_data 
basedir=c:\\Users\\Brian\\mysqlc 
port=5000 
server-id=51 
log-bin 

和我.cnf(.2)

[mysqld] 
ndb-nodeid=52 
ndbcluster 
datadir=c:\\Users\\Brian\\my_cluster\\mysqld_data 
basedir=c:\\Users\\Brian\\mysqlc 
port=5000 
server-id=52 
log-bin 

但是,當我登錄到節點(主)的數據庫並創建一個新的數據庫並插入一個新表,我意識到另一個節點不能同步它。

有人能幫助我解決這個問題?

回答

1

布賴恩,

首先,只是爲了檢查術語 - 看來,您正在嘗試使用「MySQL簇」(其中的數據被保存 - 和同步複製 - 在數據節點,而不是mysqlds)而不是「MySQL複製」(它在mysqld之間異步複製數據)。

我會假設mysqlds是與MySQL集羣產品包裝中附帶的那些(「常規」 mysqlds將無法正常工作)。

爲了將表存儲在數據節點中(因此可以通過所有mysqlds而不是在本地mysqld中可見),必須指定MySQL Cluster是要使用的存儲引擎:「CREATE TABLE mytab (....)ENGINE = NDBCLUSTER;「。如果你不這樣做,那麼這些表將使用InnoDB存儲引擎創建,並且對於每個mysqld都是本地的。

請注意,如果你希望你的MySQL集羣被完全容錯的,那麼你應該移動ndb_mgmds自己的主機(S),而不是用數據節點協同定位他們。其原因在MySQL Cluster fault tolerance – impact of deployment decisions中有解釋。

Andrew。

+0

感謝安德魯您的迴應!我嘗試去剝奪「MySQL Cluster,並且我使用engine = ndb創建了表。但是,我想知道如何在每臺主機上使用2個管理節點的情況下僅部署2臺機器?是否有可能在一臺機器出現故障後重新連接到另一臺機器,數據能夠同步回來嗎?Brian –

+1

如果您只使用2臺機器,那麼如果一臺機器出現故障,那麼存活主機上的節點將有50%的機會關閉。在第三臺主機上運行管理節點以實現容錯配置 –

+0

嗨安德魯,如果我在兩臺主機上部署管理(即每臺主機有1個管理節點,1個sql節點,1個數據節點),如果只有管理節點關閉,數據節點會知道其他工作管理節點在哪裏? –