3

我按照指南在 Ubuntu 上创建了一个 MySQL 集群:http: //bieg.wordpress.com/2008/08/03/mysql-clustering-ubuntu/

我正确初始化节点(具有 MGM 和 NDB 的节点,以及其他 NDB 节点)ndb_mgm> show;返回:

Connected to Management Server at: 10.168.222.24:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2    @10.168.222.24  (mysql-5.1.51 ndb-7.1.9, Nodegroup: 0)
id=3    @10.160.91.224  (mysql-5.1.51 ndb-7.1.9, Nodegroup: 0, Master)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @10.168.222.24  (mysql-5.1.51 ndb-7.1.9)

[mysqld(API)]   1 node(s)
id=4    @10.168.222.24  (mysql-5.1.51 ndb-7.1.9)

但是,当我去测试集群时,我在两个节点上都创建了一个数据库,但是我在一个节点中创建的表不会传播到另一个节点,内容也不会传播。

可能是什么问题呢?

谢谢

4

1 回答 1

3

默认情况下,在 MySQL 5.1 中,表是使用 MyISAM 存储引擎创建的(在 MySQL 5.5 中默认更改为 InnoDB)。使用 ndb/cluster 以外的任何存储创建的任何表对于单个 MySQL 服务器都是本地的。

要将数据存储在数据节点中并因此通过集群中的所有 MySQL 服务器可见,您需要指定将 NDB 用作存储引擎。例如,在创建表时...

CREATE TABLE simples (id INT NOT NULL PRIMARY KEY) ENGINE=ndb;

或迁移现有表...

ALTER TABLE 简化 ENGINE=ndb;

在您的情况下,ndb_mgm 的输出显示您只有一个 MySQL 服务器,您应该编辑 config.ini 文件以定义更多 [mysqld] 插槽,然后启动其他 mysqld 进程。

为什么你认为数据只存储在一个数据节点中?如果您使用 engine=ndb 创建它,那么我很确定它在两者中都有。

请注意,您关注的博客文章确实已过时(例如,您不能使用通过“apt-get install mysql-server”获得的 MySQL 服务器,而应该使用集群中包含的那个来自https://www.mysql.com/downloads/cluster/的包

下载并使用 MySQL Cluster 7.2 而不是 7.1。

可以在http://www.clusterdb.com/mysql-cluster/deploying-mysql-cluster-over-multiple-hosts/中找到更多最新的指令集

于 2012-05-18T15:48:23.567 回答