文档介绍:分布式数据库——MYSQL集群建设一概述MySQL集群是一种技术,该技术允许在无共享的系统中部署“内存中”和“磁盘中”数据库的Cluster。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。MySQLCluster由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDBCluster的数据节点,管理服务器,以及(可能存在的)专门的数据访问程序。实际上,MySQL集群是把一个叫做NDB的内存集群存储引擎集成与标准的MySQL服务器集成。它包含一组计算机,每个都跑一个或者多个进程,这可能包括一个MySQL服务器,一个数据节点,一个管理服务器和一个专有的一个数据访问程序。它们之间的关系如下图所示:SQL节点数据节点管理节点管理结点程序二存储引擎MySQLCluster使用了一个专用的基于内存的存储引擎,这样做的好处是速度快,没有磁盘I/O的瓶颈,但是由于是基于内存的,所以数据库的规模受系统总内存的限制,如果运行NDB的MySQL服务器一定要内存够大,比如4G,8G,甚至16G。NDB引擎是分布式的,它可以配置在多台服务器上来实现数据的可靠性和扩展性。理论上通过配置2台NDB的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题。该存储引擎有下列弊端:•基于内存,数据库的规模受集群内存的大小限制•基于内存,断电后数据可能会有数据丢失。•多个节点通过网络实现通讯和数据同步、查询等操作,因此整体性受络速度影响•因此速度也比较慢当然也有它的优点:•多个节点之间可以分布在不同的地理位置,因此也是一个实现分布式数据库的方案。•扩展性很好,增加节点即可实现数据库集群的扩展。•冗余性很好,多个节点上都有完整的数据库数据,因此任何一个节点宕机都不会造成服务中断。•实现高可用性的成本比较低,不象传统的高可用方案一样需要共享的存储设备和专用的软件才能实现,NDB只要有足够的内存就能实现。三系统构成Themanagement(MGM)node管理节点,用来实现整个集群的管理,理论上一般只启动一个,而且宕机也不影响cluster的服务,这个进程只在cluster启动以及节点加入集群时起作用,所以这个节点不是很需要冗余,,(DB)node:数据库节点,用来存储数据,可以和管理节点(MGM),用户端节点(API)可以处在不同的机器上,也可以在同一个机器上面,集群中至少要有一个DB节点,2个以上时就能实现集群的高可用保证。通过ndbd命令启动,第一次创建好clusterDB节点时,需要使用–init参数初始化。·SQL节点:这是用来访问簇数据的节点。:[ndbddefault]NoOfReplicas=2#Numberofreplicas #Directoryforeachdatanode'sdatafiles #Forwardslashesusedindirectorypath, #; #seeImportantnoteintextDataMemory=200M #MemoryallocatedtodatastorageIndexMemory=30M #Memoryallocatedtoindexstorage #ForDataMemoryandIndexMemory,wehaveusedthe #onlyabout500KB,thisshouldbemorethanenoughfor #thisexampleClustersetup.#TCP/IPoptions;[TCPDEFAULT]portnumber=2202[ndb_mgmd]#Managementprocessoptions:hostname=#HostnameorIPaddressofmanagement nodedatadir=C:/mysql/bin/cluster-logs#Directoryformanagementnodelogfiles[ndbd]#Optionsfordatanode"A":#(one[ndbd]sectionperdatanode)hostname= #HostnameorIPaddressdatadir=D:/ProgramFiles/mysqlcluster/datanode/mysql/bin/cluster-data