由于毕设须要学习了一点关于MySQL Cluster的东西。为避免遗忘,从今天起整理一下学过的东西。同时也但愿这些学习笔记能帮助到和我同样的初学者。 html
参考资料: node
1. http://downloads.mysql.com/tutorials/cluster/mysql_wp_cluster_quickstart_windows.pdf mysql
2. http://www.cnblogs.com/seesea125/archive/2012/03/28/2421277.html sql
下面是个人配置文件 数据库
config.ini windows
[ndbd default] api
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简单来讲就是表示备份的数目。详细介绍在这个网址
http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-nodes-groups.html。里面介绍了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声明管理节点