使用2 mysqld(API)的Mysql集群每次访问会产生不同的表

时间:2014-10-10 14:36:46

标签: mysql mysql-cluster

我正在运行一个包含4个数据节点的mysql集群,以及2个服务器,每个服务器都有一个访问(API)和管理节点。

如果我使用API​​节点1创建表,如果我尝试在API节点2上访问它,则显示为不存在。任何人都可以解释为什么会这样或如何纠正它。在2个独立服务器上运行2个API节点的目的是为了实现冗余。

请参阅下面的SHOW配置(我删除了我的ips):

Cluster Configuration
---------------------
[ndbd(NDB)]     4 node(s)
id=5    @*.*.*.*  (mysql-5.6.19 ndb-7.3.6, Nodegroup: 0)
id=6    @*.*.*.*  (mysql-5.6.19 ndb-7.3.6, Nodegroup: 0, *)
id=7    @*.*.*.*  (mysql-5.6.19 ndb-7.3.6, Nodegroup: 1)
id=8    @*.*.*.* (mysql-5.6.19 ndb-7.3.6, Nodegroup: 1)

[ndb_mgmd(MGM)] 2 node(s)
id=1    @*.*.*.*  (mysql-5.6.19 ndb-7.3.6)
id=2    @*.*.*.*  (mysql-5.6.19 ndb-7.3.6)

[mysqld(API)]   2 node(s)
id=3    @*.*.*.*  (mysql-5.6.19 ndb-7.3.6)
id=4    @*.*.*.*  (mysql-5.6.19 ndb-7.3.6)

如果您需要更多信息来回答,请询问,我会更新我的问题。

1 个答案:

答案 0 :(得分:1)

您使用的是正确的存储引擎吗? 如果要将表“群集”(存储在群集数据节点上),则应使用engine = ndbcluster。

以innodb或myisam创建的表将本地存储在创建它的节点上,不能从其他mysql api节点访问。

要将存储节点转换为ndb引擎,可以通过alter table完成。

alter table engine = ndbcluster;