0

我正在运行一个具有 4 个数据节点和 2 个服务器的 mysql 集群,每个服务器上都有一个访问(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)

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

4

1 回答 1

1

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

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

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

改变表引擎=ndbcluster;

于 2014-12-16T10:21:14.550 回答