我正在运行一个包含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)
如果您需要更多信息来回答,请询问,我会更新我的问题。
答案 0 :(得分:1)
您使用的是正确的存储引擎吗? 如果要将表“群集”(存储在群集数据节点上),则应使用engine = ndbcluster。
以innodb或myisam创建的表将本地存储在创建它的节点上,不能从其他mysql api节点访问。
要将存储节点转换为ndb引擎,可以通过alter table完成。
alter table engine = ndbcluster;