zoukankan      html  css  js  c++  java
  • Mysql:群集概念

    一 概述:

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

    二 ndb群集构架

    • 管理节点: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]}

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

     

  • 相关阅读:
    [leetcode-788-Rotated Digits]
    [leetcode-783-Minimum Distance Between BST Nodes]
    [leetcode-775-Global and Local Inversions]
    [leetcode-779-K-th Symbol in Grammar]
    对于网站,APP开发流程的理解
    进程与线程的一个简单解释【摘】
    快速入手Web幻灯片制作
    Spring MVC Hibernate MySQL Integration(集成) CRUD Example Tutorial【摘】
    linux下SVN服务器配置
    Mac OS X 下android环境搭建
  • 原文地址:https://www.cnblogs.com/jinzhenshui/p/1627188.html
Copyright © 2011-2022 走看看