Mysql:群集概念

一 概述:

  • mysql的群集是个比较另类的东西,它本质上只是标准Mysql服务器的一种存储引擎而已——名称叫 ndb 或者 ndbcluster。该引擎必须显式的编译进mysqld服务器中才可以使用
  • ndb支持较为广泛的平台及操作系统,且经过多年的发展,已经可以应用于生产环境
  • ndb引擎通过tcp协议交换群集数据
  • ndb不需要传统的共享存储设备,而是通过 专门的 ndbd数据存储引擎 来模拟共享存储
  • ndbd存储引擎支持 自动配置、多个数据复本、数据分区、自动分组等功能
  • ndb提供专门的管理工具集

 

二 ndb群集构架

 

Mysql:群集概念

 

  • 管理节点:ndb_mgmd  群集的心脏
  • 管理界面:ndb_mgm  群集的管理接口
  • 数据节点:ndbd  虚拟共享存储引擎
  • sql节点:mysqld 支持ndb引擎的mysqld服务器
  • 客户端:任何的客户端、如mysql、sqlyog等等, 无特殊要求

 

三 ndb群集中的逻辑概念和组件

  • nodeid:节点id号——唯一标识 群集内各种部件的 唯一 id 。注意:对于数据节点 范围为:1-48;对于管理节点:范围为:1-63。可能的话,管理节点和mysqld节点在:49-63的范围内。控制参数为:[ndbd] [ndbd_mgmd] nodeid
  • replicas:复件——数据的冗余度,可以理解为数据的副本个数。从数据安全和群集可用上来说,replicas越大越好,但终归要考虑性能、网络通信量、数据安全性要求等因素,mysql给出的默认值即一般的推荐值为2。控制参数为:[nbdb default] noofreplicas 。说的远一点,mysql群集这点比使用共享存储的 sqlserver群集和orace群集灵活、强大多了。
  • nodegroup:数据节点组——服务于replicas的逻辑概念和实现机制1,目的是实现组内的各节点的 复件 功能, 同时实现 组间的 复件功能。通过组 将数据的 复制 简化、明细化、可靠化。一般 组号 是动态计算的,也可以明确指定。控制参数为:[nbdb] nodegroup
  • partition:数据的的一个逻辑部分——服务于replicas的逻辑概念和实现机制2,细化逻辑数据片段,应该是复件 功能的最小逻辑单元
  • mysqld:使用和支持ndb的容器——当mysqld识别到ndb引擎的表时,就调用ndb存储引擎插件 进而使用 ndb群集访问功能。必须注意:ndb对mysqld来说只是一个插件存储引擎而已,其他mysqld必须的东西 和原来一样!!

 

四 群集管理节点配置文件和配置参数

mysql在这一点上真的不错。所有的程序——无论是客户端、服务器、还是各组件程序——都遵循同样的规则:识别同样的参数、读取同样的配置文件、依照同样的规则进行扩展!

  • 必须注意程序读取配置文件的 次序、路径
  • 可以通过命令行选项覆盖默认的行为
  • 每种程序都读取特定的节,注意通用节

 

群集配置文件:--config-file=filename, -f filename :默认为 "./config.ini"

群集管理节点读取的节有很多很多,很多参数可以用在不同的节,某些参数只能用在特定的节。注意如果executeoncomputer 和 hostname 参数都不配置,则认为是 localhost

[computer]

  • id=n #注意:此处的id仅仅就是id而不是其他节中 nodeid的别名,所以,不能写成nodeid。该值用在 [ndbd] 和 [ndbd_mgmd] 的 executeoncomputer的值中
  • hostname=name_or_ip

 

[mgm] [ndbd_mgmd]

  • nodeid={1-63}
  • executeoncomputer=id #不能用在 [??? default] 中
  • hostname={localhost|hostname or ip}[:port] #不能用在 [??? default] 中
  • datadir={.|path}  #注意不用使用引号括起来的字符串
  • logdestination={FILE:filename=ndb_%nodeid%_cluster.log,maxsize=1000000,maxfile=6|[CONSOLE,{SYSLOG:{[auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, syslog, user, uucp, local0, local1, local2, local3, local4, local5, local6, local7]}},FILE]...} #日志目标可以用多种和多个;FILE目标可以使用绝对路径;SYSLOG有很多的系统日志目的的!

 

[ndbd default] [ndbd]

  • noofreplicas={2|n} #必须在[ndbd default]中
  • nodegroup=n #只是第一次启动节点是会用到,主要用来向现有的群集添加新的数据节点用。通常ndb会自动计算分配该值
  • nodeid=n #只能用于[ndbd]
  • hostname=string  #只能用于[ndbd]
  • serverport={动态|1-64K} #通常用于有防火墙的os中
  • datadir=path #指示trace files, log files, pid files and error logs 的位置。默认是节点进程的工作目录。
  • filesystempath=path # 指示 metadata, REDO logs, UNDO logs (for Disk Data tables), and data files 的位置,默认是 DataDir。该目录必须是os存在的!在该目录下,节点文件夹会自动建立,形如: ndb_2_fs.
  • backupdatadir=path #指示数据节点备份的目录 ,默认 同 FileSystemPath 
  • datamemory={80M|1M-1024G}
  • -----其他内存、元数据等参数

 

[mysqld] [api]

  • nodeid
  • hostname

 

[tcp default] [tcp]

 

[sci]

 

 

五 数据节点配置文件和配置参数

使用标准的my.ini或my.cnf文件

bind-address=hostname or specified ip address

ndb-connectstring={ localhost:1186 | [nodeid=id,] { hostname_or_ip [:port]}  [,....n]}

ndb-nodeid=n

initial

initial-start

nowait-nodes=node_id_1 [,.....n]

 

 

 

六 mysqld节点配置文件和配置参数

使用标准的my.ini或my.cnf文件

读取节:[mysqd]

ndbcluster | ndbcluster={on | yes | no | off} #默认是关闭的,相当于指定了 skip-ndbcluster参数

skip-ndbcluster #显式的关闭ndb引擎,这是默认的

ndb-nodeid={1-63} #如果设置,必须在ndb-connectstring前面。设置该值 可以 覆盖 ndb-connectstring中的指定的nodeid、可以覆盖群集配置文件中指定的nodeid、可以禁止管理服务自动为该mysqld节点自动分配nodeid。注意:ndb-nodeid 不能和 ndb-connectstring中指定 nodeid=n同时设置;该值 必须和config指定了点nodeid相匹配、或者config中没有指定nodeid而是让管理服务自动分配nodeid;当然该值不能和群集中已经分配的nodeid冲突!!

ndb-connectstring={ localhost:1186 | [nodeid=id,] { hostname_or_ip [:port]}  [,....n]}

 

 

七 待续............... 还有很多未尽的事宜,不断更新补充中......

 

 

你可能感兴趣的:(mysql)