因为毕设需要学习了一点关于MySQL Cluster的东西。为避免遗忘,从今天起整理一下学过的东西。同时也希望这些学习笔记能帮助到和我一样的初学者。
安装
参考资料:
1.
2.
下面是我的配置文件
config.ini
[ndbd default]
noofreplicas=2
datadir=d:\my_cluster\ndb_data
[ndb_mgmd]
hostname=10.128.50.68
datadir=d:\my_cluster\ndb_data
NodeId=1
[ndbd]
hostname=10.128.50.68
NodeId=3
[ndbd]
hostname=10.128.50.179
NodeId=4
[ndbd]
hostname=10.128.50.68
NodeId=5
[ndbd]
hostname=10.128.50.179
NodeId=6
[mysqld]
hostname=10.128.50.68
NodeId=7
[mysqld]
hostname=10.128.50.179
NodeId=8
[mysqld]
[api]
# do not specify NodeId!
hostname=10.128.50.68
[api]
# do not specify NodeId!
hostname=10.128.50.68
[api]
# do not specify NodeId!
hostname=10.128.50.68
[api]
# do not specify NodeId!
hostname=10.128.50.179
[api]
# do not specify NodeId!
hostname=10.128.50.179
[api]
# do not specify NodeId!
hostname=10.128.50.179
my.cnf
[mysqld]
ndbcluster
default-storage-engine=ndbcluster
character_set_server=utf8
datadir=D:\\my_cluster\\mysqld_data
basedir=D:\\mysqlc
port=5000
ndb-cluster-connection-pool=4
[mysql_cluster]
ndb-connectstring=10.128.50.68
几点说明:
1.主机10.128.50.68上运行了一个管理节点(mgmd),一个MySQL节点(mysqld)和两个数据节点(ndbd)
主机10.128.50.179上运行了一个MySQL节点和两个数据节点
2.参数noofreplicas简单来说就是表示备份的数目。详细介绍在这个网址
。里面介绍了node、node group、replicas和partition这几个概念和他们之间的关系。这些知识对指定一个有效的备份策略很有帮助。如果你不明白,很可能无法实现MySQL官方承诺的no single point of failure。
3.[api]这一项表示mysqld和ndbd之间打开的连接。具有相同hostname的[api]和[mysqld]项组成主机mysqld和ndbd之间的连接池。详细信息可以参考MySQL官方手册MySQL_Cluster_Performance_WP.pdf中Connection pools小节
4.[api]节点的nodeid不能指定。这个MySQL Cluster启动后会自动为其分配nodeid。[api]项最好写在指定nodeid的项后面。否则,可能会遇到我这样的错误。
我原来把四个[api]加在nodeid=7的那个[mysqld]后面。然后又指定了这四个[api]后面的[mysqld]的nodeid=8。结果集群启动时立马报错:nodeid重复
5.my.cnf文件里有两个我自己添加的几个选项。
default-storage-engine=ndbcluster用来指定默认存储引擎。(原来默认的居然是InnoDB,真是坑爹啊。身为一个分布式数据库,情何以堪呐!)
character_set_server=utf8用来指定服务器的编码方式。不知道为什么,不改这个,光改数据库的编码方式,插入中文老是出错。原来用在MySQL上的参数default-character-set不管用了。如果加上default-character-set=utf8,mysqld启动以后几秒内就会自动关闭。
ndb-cluster-connection-pool=4和上面说的连接池对应。
ndb-connectstring=10.128.50.68声明管理节点